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]