Resource limits for class root: cputime infinity secs filesize infinity kB datasize infinity kB stacksize infinity kB coredumpsize infinity kB memoryuse infinity kB memorylocked infinity kB maxprocesses infinity openfiles infinity sbsize infinity bytes vmemoryuse infinity kB pseudo-terminals infinity swapuse infinity kB
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of George L. Yermulnik Sent: Wednesday, December 03, 2014 4:51 PM To: [email protected] Subject: Re: [freebsd] squid: kern.maxfilesperproc Hello! On Wed, 03 Dec 2014 at 14:11:56 (+0200), Golub Mikhail wrote: > Добавил для дебага в /usr/local/etc/rc.d/squid: > squid_prestart() > { > sleep 5 > set -x > limits -a >> /tmp/res.txt > sysctl kern.maxfilesperproc >> /tmp/res.txt > set +x Просто из любопытства: добавьте к "limits -a" ещё "-U `whoami`" и покажите вывод и описание класса, которое покажет limits. > Ребут. > В /var/log/squid/cache.log: > 2014/12/03 13:41:21 kid1| Set Current Directory to /var/log/squid > 2014/12/03 13:41:21 kid1| Starting Squid Cache version 3.4.9 for amd64-portbld-freebsd10.1... > 2014/12/03 13:41:21 kid1| Process ID 1317 > 2014/12/03 13:41:21 kid1| Process Roles: worker > 2014/12/03 13:41:21 kid1| With 28737 file descriptors available > ... > При этом в /tmp/res.txt: > Resource limits (current): > cputime infinity secs > filesize infinity kB > datasize 33554432 kB > stacksize 524288 kB > coredumpsize infinity kB > memoryuse infinity kB > memorylocked 131072 kB > maxprocesses 5749 > openfiles 28737 > sbsize infinity bytes > vmemoryuse infinity kB > pseudo-terminals infinity > swapuse infinity kB > kern.maxfilesperproc: 100000 > Вот все, что менялось. > /boot/loader.conf > zfs_load="YES" > autoboot_delay="2" > ipfw_load="YES" > net.inet.ip.fw.default_to_accept="1" > accf_http_load="YES" > /etc/sysctl.conf > net.inet.ip.fw.verbose=1 > net.inet.ip.fw.verbose_limit=5 > kern.maxfilesperproc=100000 > kern.maxfiles=130000 > При загрузке системы имеем "limits -a": > openfiles 28737 > А после загрузки от рута "limits -a": > openfiles 100000 > В /etc/login.conf классы default и daemon не менял. > https://www.freebsd.org/doc/handbook/security-resourcelimits.html > "Processes started at system startup by /etc/rc are assigned to the daemon login class." > Удалил из /etc/sysctl.conf, прописал лимиты в /boot/loader.conf - не помогло. > Еще заметил, что сквид вылетает при загрузке системы, потом запускается. > Причина вылетания - не может установить соединение с MySQL, хотя запускается он ПОСЛЕ мускула. > А у сквида есть внешние хелперы, которые работают с SQL. > Решил добавлением паузы в пять секунд в стартовый скрипт сквида. > Теперь сквид стартует чисто при запуске системы, с первого раза, без ошибок. > Но всеравно с "file descriptors available" меньше заданного через sysctl.conf (или /boot/loader.conf, пробовал оба варианта). > По поводу http://nginx.org/r/worker_rlimit_nofile - похоже на то. > Но у сквида нет такого параметра. > Есть max_filedescriptors - но если в системе меньше их, чем я хочу взять, то "до лампочки" указание этой опции в конфиге. > Да и этот параметр используется для уменьшения "аппетита" сквида к дескрипторам. > # TAG: max_filedescriptors > # Reduce the maximum number of filedescriptors supported below > # the usual operating system defaults. > # > # Remove from squid.conf to inherit the current ulimit setting. > Попробую вариант отладки, предложенный Anton Yuzhaninov. > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of Lystopad Aleksandr > Sent: Wednesday, December 03, 2014 12:41 PM > To: [email protected] > Subject: Re: [freebsd] squid: kern.maxfilesperproc > Hello, Golub Mikhail! > On Wed, Dec 03, 2014 at 12:26:58PM +0200 > [email protected] wrote about "[freebsd] squid: kern.maxfilesperproc": > > Доброго времени суток. > > Еще один вопрос, который решаю перезапуском сквида. Но это не правильно :) > > Мне мало дескрипторов, с которыми сквид запускается при старте системы > > (именно после перезагрузки сервера). > > В /etc/sysctl.conf указано: > > kern.maxfilesperproc=100000 > Попробуйте это указать в /boot/loader.conf -- возможно это решение. -- George L. Yermulnik [YZ-RIPE]
