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]

Ответить