[PATCH] параметр --rlimit-nofile=COUNT для конфигурирования, по умолчанию 4096

Gena Makhomed gmm на csdoc.com
Вт Мар 1 15:25:24 MSK 2011


On 28.02.2011 22:42, Igor Sysoev wrote:

>>>> 2011/02/28 13:21:12 [emerg] 15785#0: open()
>>>> "/usr/share/nginx/logs/mbttechnology.access.log" failed (24: Too many
>>>> open files)
>>
>>> Это и есть ошибки при reload.
>>> Возможно, нужно добавлять фразу "while reconfiguring".
>>
>> предлагаю более простой и надежный вариант решения этой проблемы:
>>
>> при старте nginx установить limit on number of open files
>> в (40 * 1024) вместо дефолтового для системы значения 1024.
>>
>> это устранит проблему Too many open files во время service nginx reload,
>> при этом для worker-процессов можно будет выставить любой нужный лимит
>> с помощью глобальной директивы worker_rlimit_nofile в конфиге nginx.
>
> А как на это значение будут реагировать ОСы ?
> Например, во FreeBSD по умолчанию kern.maxfiles суммарно
> для всех процессов около 12000.

Ok. изменил патч,
теперь лимит можно задать во время конфигурирования nginx
например, таким образом: ./configure --rlimit-nofile=16384

по умолчанию, если опция не задана - RLIMIT_NOFILE будет 4096
если надо вернуть старое поведение, тогда --rlimit-nofile=1024
при этом код для изменения RLIMIT_NOFILE не будет скомпилирован.

сейчас nginx перестает реагировать на service nginx reload
если в конфиге есть более чем 512 сайтов с 512 лог-файлами.
после применения патча - этот лимит увеличивается до 2048.

этот же лимит в 4096 открытых файловых дескрипторов будет
действовать и для всех worker-процессов, если начинающий
пользователь не задаст в конфиге директиву worker_rlimit_nofile

в то же время для advanced пользователей появляется возможность
увеличивать RLIMIT_NOFILE для master только с помощью опции configure
без необходимости вручную добавлять ulimit -n 16384 в стартовые скрипты

-- 
Best regards,
  Gena
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx-rlimit-nofile.patch
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20110301/731aa246/attachment-0003.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx-configure.patch
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20110301/731aa246/attachment-0004.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx-options.patch
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20110301/731aa246/attachment-0005.ksh>


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