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]

Ответить