Welcome! Log In Create A New Profile

Advanced

Re: worker_connections

Maxim Dounin
January 04, 2021 12:58PM
Hello!

On Mon, Jan 04, 2021 at 04:59:53PM +0200, Gena Makhomed wrote:

> В документации написано, что значение по-умолчанию
> для директивы worker_connections равно 512.
>
> Значение директивы worker_connections равное 512
> дает всего лишь 256 одновременных подключений к бекенду.
>
> И там же в документации нарисован пример,
> увеличивающий worker_connections до 2048.
>
> Не совсем понятно, чем вызвано такое маленькое значение
> для директивы worker_connections указано по-умолчанию.
>
> worker_connections 512 - это явно не оптимальное значение.
>
> Ведь даже в дефолтовом конфиге nginx.conf, который поставляется
> с nginx указано в два раза большее значение: worker_connections 1024;

На некоторых операционных системах 1024 уже упирается в
ограничение ОС, поэтому по умолчанию используется 512.

При этом даже минимальное значение по умолчанию - в разы больше,
чем MaxClients (MaxRequestWorkers) в каком-нибудь Apache, так что
нет повода считать, что оно слишком маленькое.

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

> Каким способом можно подобрать наиболее оптимальное значение
> для директивы worker_connections - так чтобы nginx не упирался
> в этот лимит даже в случае DDoS-атак на сервер и в то же время,
> чтобы память зря не расходовалась?

В первую очередь стоит отталкиваться от того, какое максимальное
количество соединений может держать операционная система с
конкретными настройками. И настраивать nginx так, чтобы он таки
_упирался_ в worker_connections чуть раньше, чем операционная
система упрётся в свои ограничения (или nginx упрётся в
ограничения операционной системы). Потому что:

1. Если первой упрётся операционная система - то может статься,
что операционную систему мы потеряем.

2. А если nginx упрётся в какой-нибудь лимит по max files - то он
не сможет принимать входящие соединения вообще, и даже их сразу
закрывать после этого, и в то же время accept() будет всегда
сообщать о новых соединениях. Как-то игнорировать такое,
периодически ругаясь в логи, nginx с некоторых пор умеет, но это
категорически неправильный режим работы.

3. При приближении к исчерпанию worker_connections nginx умеет
закрывать keepalive-соединения, которые дольше всего не
использовались, тем самым снижая нагрузку.

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

worker_connections

Gena Makhomed January 04, 2021 10:02AM

Re: worker_connections

Maxim Dounin January 04, 2021 12:58PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 59
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