Re: релоад конфига

Gena Makhomed gmm at csdoc.com
Wed Aug 14 11:58:49 UTC 2013


On 14.08.2013 14:02, Nick Knutov wrote:

> # nginx -V
> --with-cc-opt='-DFD_SETSIZE=2048'

массив, заданный FD_SETSIZE используется только в том случае,
когда для обработки соединений используется select()

использовать select() с современными версиями ядер смысла нет.
ведь на Linux nginx всеравно будет использовать epoll
подробности: http://nginx.org/ru/docs/events.html

я даже специально выставляю при сборке nginx

     --without-select_module
     --without-poll_module

чтобы этот лишний код не компилировался внутрь бинарника.
(select и poll нужны на старых ядрах, версий 2.2 и 2.4)

более того, на Linux невозможно изменить FD_SETSIZE,
система всеравно будет использовать значение по-умолчанию 1024

http://www.moythreads.com/wordpress/2009/12/22/select-system-call-limitation/

/usr/include/sys/select.h - здесь задается битовый массив
/usr/include/bits/typesizes.h - здесь задается __FD_SETSIZE

в результате: "An fd_set is a fixed size buffer. Executing FD_CLR or 
FD_SET with a value of fd that is negative or is equal to or larger than 
FD_SETSIZE will result in undefined behavior."

> Проблема на первом сервере стабильно воспроизводится.

причину проблем может помочь понять отладочный лог:
http://nginx.org/ru/docs/debugging_log.html

параметр --with-debug много оверхеда не добавляет,
но очень удобен при поиске причин различных проблем.

-- 
Best regards,
  Gena



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