Re: Зависимость значений директив *_timeout от значения timer_resolution

Валентин Бартенев vbart на nginx.com
Вт Фев 12 14:41:42 UTC 2019


On Tuesday 12 February 2019 17:31:10 igor isaenko wrote:
> В документации написано, что эта директива указывает, сколько раз в секунду
> дергать gettimeofday, чтобы не дергать её на каждый запрос.
> Она появилась в версии 0.3.х.
> Мне кажется, это отличная директива, просто нужно указать, на что она
> влияет.
> 
> Если её убрать из конфига и оставить дефолтное значение (100мс), придется
> явно указать, что нельзя ставить директивам *_timeout значения <= 100 мс.
> А если её убрать только из документации, всем станет интересно, что это :)


У неё нет дефолтного значения.  По дефолту она выключена и лучше её оставить
в таком состоянии.

Смотрите: http://nginx.org/r/timer_resolution/ru

На современных системах (последние 10+ лет?) вызовы gettimeofday и так очень
дешевы.  В свою очередь nginx их и так экономит, делает всего один вызов на
итерацию цикла.

Включение же timer_resolution в любое значение на Linux приводит к тому,
что раз в заданный интервал начинает прилетать сигнал.  Регулярно прилетающий
сигнал может приводить к прерыванию выполняемых в этот момент системных вызовов.
А то в свою очередь будет только негативно сказываеться на производительности.
Кроме того это может приводить к разным спецэффектам в виде проявления очень
редких багов, потенциально возможных в этом месте.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru