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

2020-06-25 Пенетрантность Maxim Dounin
Hello!

On Thu, Jun 25, 2020 at 04:04:55PM -0400, edo1 wrote:

> BTW, а как работает  worker_cpu_affinity auto если воркеров меньше, чем
> ядер?

Воркеры будут привязаны к первым ядрам, лишние ядра - останутся 
свободными.  Если нужно, чтобы остались свободными другие ядра - 
это можно сделать с помощью дополнительной маски.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность edo1
BTW, а как работает  worker_cpu_affinity auto если воркеров меньше, чем
ядер?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,288449,288467#msg-288467

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit rate и высокие скорости

2020-06-25 Пенетрантность edo1
> https://trac.nginx.org/nginx/ticket/1678#comment:1

читал

> Подкрутить можно размеры буферов и/или включить sendfile,

размеры крутил (без них было сильно хуже), sendfile тоже пробовал включать
(точнее отключать aio).

с "output_buffers 2 10m" получается около 80Мб/с, но 20Мб на клиента как-то
перебор (и опять же это не ровно 100, как в указано через limit_rate)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,288429,288466#msg-288466

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: ssl_protocols

2020-06-25 Пенетрантность Maxim Dounin
Hello!

On Thu, Jun 25, 2020 at 09:23:35PM +0300, Gena Makhomed wrote:

> Максим, а почему такое значение по-умолчанию у директивы ssl_protocols?
> 
> В частности, протокол TLSv1.3 выключен, но вместо него включены
> протоколы TLSv1 и TLSv1.1 - сейчас ведь наоборот рекомендуют делать.
> 
> Даже RFC вышел соответствующий еще в мае 2015 года,
> https://tools.ietf.org/html/rfc7525#section-3.1.1

Just in case, по ссылке для TLSv1.0 и TLSv1.1 чётко сказано: "the 
only exception is when no higher version is available in the 
negotiation".  Именно так nginx и работает по умолчанию.

> И такие же настройки рекомендуются https://ssl-config.mozilla.org/
> 
> Почему бы не сделать ssl_protocols TLSv1.2 TLSv1.3; значением по-умолчанию в 
> nginx?

Тут, на самом деле, два вопроса:

1. А не запретить ли TLSv1.0 и TLSv1.1 по умолчанию.  Мне это пока 
кажется плохой идеей, ибо клиентов, не умеющих TLSv1.2 всё ещё 
много.  Подробный ответ тут:

https://trac.nginx.org/nginx/ticket/1911#comment:2

2. А не разрешить ли TLSv1.3 по умолчанию.  Сейчас для этого как 
минимум один блокер - в TLSv1.3 не настраиваются шифры и в 
результате сломаются конфиги с "ssl_ciphers aNULL;", подробнее 
тут:

http://mailman.nginx.org/pipermail/nginx/2018-November/057194.html

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

ssl_protocols

2020-06-25 Пенетрантность Gena Makhomed


Максим, а почему такое значение по-умолчанию у директивы ssl_protocols?

В частности, протокол TLSv1.3 выключен, но вместо него включены
протоколы TLSv1 и TLSv1.1 - сейчас ведь наоборот рекомендуют делать.

Даже RFC вышел соответствующий еще в мае 2015 года,
https://tools.ietf.org/html/rfc7525#section-3.1.1

И такие же настройки рекомендуются https://ssl-config.mozilla.org/

Почему бы не сделать ssl_protocols TLSv1.2 TLSv1.3; значением 
по-умолчанию в nginx?


--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Maxim Dounin
Hello!

On Thu, Jun 25, 2020 at 08:13:06PM +0500, Илья Шипицин wrote:

> чт, 25 июн. 2020 г. в 19:59, Gena Makhomed :
> 
> > On 25.06.2020 17:23, Maxim Dounin wrote:
> >
> > >>> в этом месте вы думаете, что воркер сам себе проставил такой лимит на
> > >>> количество файлов.
> > >>
> > >>> посмотрите в /proc//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 шлет файловые дескрипторы
> > из мастера в воркеры только в процессе старта и в процессе релоада,
> > то есть, эта ошибка
> >
> 
> насколько я помню, в принципе разная работа с дескрипторами может быть,
> например, если логи открыты в буферизированном варианте.

В данном случае речь не про открытые файловые дескрипторы, а про 
дескрипторы, одновременно отправляемые через unix-сокеты с помощью 
системного вызова sendmsg().  Там тоже применяется NOFILE-лимит, 
но счётчик при этом совершенно отдельный.

> (если небуферизированные, то воркер открывает, записывает и закрывает. если
> буферизированные, то дескриптор хранится в мастере)

Нет.  Паттерн "воркер открывает, записывает и закрывает" 
применяется только для access-логов с переменными в имени.  В 
остальных случаях - то есть когда переменных в имени лога нет - 
лог-файл открывается мастером и остаётся открытым всегда, от 
настроек буферизации это не зависит.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Maxim Dounin
Hello!

On Thu, Jun 25, 2020 at 05:59:33PM +0300, Gena Makhomed wrote:

> On 25.06.2020 17:23, Maxim Dounin wrote:
> 
> > > > в этом месте вы думаете, что воркер сам себе проставил такой лимит на
> > > > количество файлов.
> > > 
> > > > посмотрите в /proc//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?

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

Но вообще настройка "worker_processes auto;" не является 
настройкой по умолчанию именно потому, что на серверах с большим 
количеством ядер/потоков может потребовать большого количества 
различных ресурсов, и применять её без соответствующего тюнинга 
системных ограничений - не очень хорошая идея.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Gena Makhomed

On 25.06.2020 18:13, Илья Шипицин wrote:


интересно посмотреть, что у вас в /proc//fd , это файлы открытые
мастером


При worker_processes 32:

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

# ls -l /proc/909/fd/

всего там 72 дескриптора,

0 -> /dev/null
1 -> /dev/null
2 -> /var/log/nginx/error.log
3 -> socket:[1142765]
4 -> /var/log/nginx/error.log
5 -> /var/log/nginx/access.log
6 -> socket:[1148452]
...

остальные указывают на сокеты. (мастер слушает на 80 и 443 порту)

P.S.

Но это сервер с 0-й нагрузкой, там ничего не пишется и не читается,
он сейчас находится как раз в процессе настройки.

P.P.S.

Там еще один очень неприятный глюк с systemd проявился, не имеющий 
отношения к nginx:


https://lists.freedesktop.org/archives/systemd-devel/2020-June/044763.html

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Илья Шипицин
чт, 25 июн. 2020 г. в 19:59, Gena Makhomed :

> On 25.06.2020 17:23, Maxim Dounin wrote:
>
> >>> в этом месте вы думаете, что воркер сам себе проставил такой лимит на
> >>> количество файлов.
> >>
> >>> посмотрите в /proc//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 шлет файловые дескрипторы
> из мастера в воркеры только в процессе старта и в процессе релоада,
> то есть, эта ошибка
>

насколько я помню, в принципе разная работа с дескрипторами может быть,
например, если логи открыты в буферизированном варианте.
(если небуферизированные, то воркер открывает, записывает и закрывает. если
буферизированные, то дескриптор хранится в мастере)


интересно посмотреть, что у вас в /proc//fd , это файлы открытые
мастером



>
> 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
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Gena Makhomed

On 25.06.2020 17:23, Maxim Dounin wrote:


в этом месте вы думаете, что воркер сам себе проставил такой лимит на
количество файлов.



посмотрите в /proc//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

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

2020-06-25 Пенетрантность Maxim Dounin
Hello!

On Thu, Jun 25, 2020 at 04:05:19PM +0300, Gena Makhomed wrote:

> On 25.06.2020 14:48, Илья Шипицин wrote:
> 
> > > /etc/systemd/nspawn/1.nspawn
> > > 
> > > [Exec]
> > > LimitNOFILE=infinity
> 
> > > /etc/nginx/nginx.conf
> > > 
> > > worker_rlimit_nofile 262144;
> 
> > в этом месте вы думаете, что воркер сам себе проставил такой лимит на
> > количество файлов.
> 
> > посмотрите в /proc//limits , действительно ли там значения, которые вы
> > ожидаете или нет
> > у нас было, что systemd применял свои лимиты поверх
> 
> # cat /proc/205/cmdline
> nginx: worker process
> 
> # grep "Max open files" /proc/205/limits
> Max open files  262144   262144   files

А у master-процесса что?

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

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

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Gena Makhomed

On 25.06.2020 14:48, Илья Шипицин wrote:


/etc/systemd/nspawn/1.nspawn

[Exec]
LimitNOFILE=infinity



/etc/nginx/nginx.conf

worker_rlimit_nofile 262144;



в этом месте вы думаете, что воркер сам себе проставил такой лимит на
количество файлов.



посмотрите в /proc//limits , действительно ли там значения, которые вы
ожидаете или нет
у нас было, что systemd применял свои лимиты поверх


# cat /proc/205/cmdline
nginx: worker process

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

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Илья Шипицин
чт, 25 июн. 2020 г. в 16:34, Gena Makhomed :

> Здравствуйте, All!
>
> CentOS 8.2, nginx 1.19.0 из официального репозитория.
>
> Когда запускаю nginx внутри systemd-nspawn контейнера -
> в error.log видно большое количество сообщений про ошибку:
>
> [alert] 269#269: sendmsg() failed (109: Too many references: cannot splice)
>
> Подозреваю, что nginx в контейнере не хватает каких-то лимитов,
> только не понятно каких именно.
>
> При worker_processes 64; ошибка появляется в логах,
> при worker_processes 32; ошибки в логах больше нет.
>
> Каким образом можно сделать так, чтобы nginx работал в контейнере
> systemd-nspawn без ошибок с директивой worker_processes 64; в конфиге?
>
> Насколько критична эта ошибка, и может ли она появиться в логах
> при worker_processes 32; в случае высокой нагрузки на nginx?
>
> Процессор на этом сервере: AMD EPYC 7502P 32-Core Processor
> 32 физических ядра, 64 виртуальных ядра (Simultaneous MultiThreading).
>
> Конфиг:
>
> /etc/systemd/nspawn/1.nspawn
>
> [Exec]
> ResolvConf=copy-host
> LimitNOFILE=infinity
> LimitNICE=40
>
> [Network]
> Bridge=venet0
>
> /etc/nginx/nginx.conf
>
> worker_processes 64;
> worker_priority -10;
> worker_rlimit_core 512M;
> worker_rlimit_nofile 262144;
>

в этом месте вы думаете, что воркер сам себе проставил такой лимит на
количество файлов.

посмотрите в /proc//limits , действительно ли там значения, которые вы
ожидаете или нет
у нас было, что systemd применял свои лимиты поверх



> worker_shutdown_timeout 60s;
> working_directory /var/log/nginx;
>
> error_log /var/log/nginx/error.log warn;
>
> events {
>  worker_connections  262144;
>  use epoll;
> }
>
> http {
>  # ...
> }
>
> --
> Best regards,
>   Gena
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2020-06-25 Пенетрантность Gena Makhomed

Здравствуйте, All!

CentOS 8.2, nginx 1.19.0 из официального репозитория.

Когда запускаю nginx внутри systemd-nspawn контейнера -
в error.log видно большое количество сообщений про ошибку:

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

Подозреваю, что nginx в контейнере не хватает каких-то лимитов,
только не понятно каких именно.

При worker_processes 64; ошибка появляется в логах,
при worker_processes 32; ошибки в логах больше нет.

Каким образом можно сделать так, чтобы nginx работал в контейнере
systemd-nspawn без ошибок с директивой worker_processes 64; в конфиге?

Насколько критична эта ошибка, и может ли она появиться в логах
при worker_processes 32; в случае высокой нагрузки на nginx?

Процессор на этом сервере: AMD EPYC 7502P 32-Core Processor
32 физических ядра, 64 виртуальных ядра (Simultaneous MultiThreading).

Конфиг:

/etc/systemd/nspawn/1.nspawn

[Exec]
ResolvConf=copy-host
LimitNOFILE=infinity
LimitNICE=40

[Network]
Bridge=venet0

/etc/nginx/nginx.conf

worker_processes 64;
worker_priority -10;
worker_rlimit_core 512M;
worker_rlimit_nofile 262144;
worker_shutdown_timeout 60s;
working_directory /var/log/nginx;

error_log /var/log/nginx/error.log warn;

events {
worker_connections  262144;
use epoll;
}

http {
# ...
}

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru