Welcome! Log In Create A New Profile

Advanced

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Gena Makhomed
June 25, 2020 11:00AM
On 25.06.2020 17:23, Maxim Dounin wrote:

>>> в этом месте вы думаете, что воркер сам себе проставил такой лимит на
>>> количество файлов.
>>
>>> посмотрите в /proc/<pid>/limits , действительно ли там значения, которые вы
>>> ожидаете или нет
>>> у нас было, что systemd применял свои лимиты поверх
>>
>> # cat /proc/205/cmdline
>> nginx: worker process
>>
>> # grep "Max open files" /proc/205/limits
>> Max open files 262144 262144 files
>
> А у master-процесса что?

# cat /proc/182/cmdline
nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

# grep "Max open files" /proc/182/limits
Max open files 1024 262144 files

С помощью директив конфига nginx, насколько я понимаю,
1024 нельзя увеличить до какого-нибудь большего значения.

с помощью systemctl edit nginx сделал

/etc/systemd/system/nginx.service.d/override.conf

[Service]
LimitNOFILE=infinity

так что теперь, после перезапуска у мастера такие параметры:

# cat /proc/690/cmdline
nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

# grep "Max open files" /proc/690/limits
Max open files 262144 262144 files

И nginx теперь нормально запускается даже при worker_processes 128;

Спасибо!

> Если я правильно понимаю код ядра линукса, ETOOMANYREFS означает,
> что количество одновременно отправляемых файловых дескрипторов
> превышает лимит на количество дескрипторов в отправляющем
> процессе, в данном случае - в мастере, ибо никто больше файловые
> дескрипторы с помощью sendmsg() не шлёт.

> Ну и отвечая на исходный вопрос про "насколько критична эта
> ошибка": приведённая ошибка как минимум означает, что система
> общения между мастером и рабочими процессами больше не работает.
> То есть отвечать на запросы nginx будет, а скажем reload сделать -
> уже нормально не сможет. То есть приблизительно как и со всеми
> ошибками уровня alert: "что-то развалилось и непредсказуемо
> глючит, сделайте что-нибудь".

Если я правильно понял Ваш ответ - nginx шлет файловые дескрипторы
из мастера в воркеры только в процессе старта и в процессе релоада,
то есть, эта ошибка

sendmsg() failed (109: Too many references: cannot splice)

не должна повториться в дальнейшем, в процессе работы nginx
под большой нагрузкой, если в процессе запуска и релоада
подобных ошибок не было.

P.S.

На том сервере процессор AMD EPYC 7502P 32-Core Processor
так что 32 worker-процесса nginx вполне должно быть достаточно,
по количеству физических ядер и без правки LimitNOFILE для мастера.

Но при настройке worker_processes auto; глюки есть уже сейчас,
потому что в auto считаются виртуальные а не физические ядра.

Со стороны nginx этот глюк никак нельзя обойти/устранить,
чтобы все работало при настройке worker_processes auto;
без ручной правки LimitNOFILE через systemctl edit nginx
на сервере с процессором AMD EPYC 7502P 32-Core Processor?

--
Best regards,
Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

[alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Gena Makhomed June 25, 2020 07:36AM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Илья Шипицин June 25, 2020 07:50AM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Gena Makhomed June 25, 2020 09:06AM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Maxim Dounin June 25, 2020 10:24AM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Gena Makhomed June 25, 2020 11:00AM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Илья Шипицин June 25, 2020 11:14AM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Gena Makhomed June 25, 2020 12:04PM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Maxim Dounin June 25, 2020 12:34PM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Maxim Dounin June 25, 2020 12:10PM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

edo1 June 25, 2020 04:04PM

Re: [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)

Maxim Dounin June 25, 2020 06:20PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 93
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready