Opened 4 months ago

Closed 3 months ago

#2017 closed defect (fixed)

worker_connections are not enough

Reported by: win-t@… Owned by:
Priority: minor Milestone:
Component: nginx-core Version: 1.19.x
Keywords: Cc:
uname -a: Linux efd52cfb95f5 4.19.123-coreos #1 SMP Fri May 22 19:21:11 -00 2020 x86_64 Linux
nginx -V: nginx version: nginx/1.19.1
built by gcc 9.2.0 (Alpine 9.2.0)
built with OpenSSL 1.1.1d 10 Sep 2019 (running with OpenSSL 1.1.1g 21 Apr 2020)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-perl_modules_path=/usr/lib/perl5/vendor_perl --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-Os -fomit-frame-pointer' --with-ld-opt=-Wl,--as-needed

Description

after update to v1.19.1 (nginx from official docker image), I got many errors about worker_connections are not enough, I try to increase the number to 20480:

2020/07/11 13:20:05 [alert] 20#20: 20480 worker_connections are not enough
2020/07/11 13:20:05 [alert] 20#20: 20480 worker_connections are not enough
2020/07/11 13:20:05 [alert] 20#20: 20480 worker_connections are not enough
2020/07/11 13:20:05 [alert] 20#20: 20480 worker_connections are not enough
2020/07/11 13:20:06 [alert] 20#20: 20480 worker_connections are not enough
2020/07/11 13:20:06 [alert] 20#20: 20480 worker_connections are not enough
2020/07/11 13:20:06 [alert] 20#20: 20480 worker_connections are not enough

I suspect because of the new change in v1.19.1:

Change: the "lingering_close", "lingering_time", and "lingering_timeout" directives now work when using HTTP/2.

Please investigate

Thanks

Change History (6)

comment:1 by win-t@…, 4 months ago

I'm pretty sure that is not because of ulimit problem

comment:2 by win-t@…, 4 months ago

Downgraing to v1.19.0 solve the issue

Btw, this issue commponent is not "Documentation", but I can't change it

comment:3 by Sergey Kandaurov, 4 months ago

Component: documentationnginx-core

comment:4 by Ruslan Ermilov, 3 months ago

Has the number of these alerts increased significantly after upgrading to 1.19.1, or these alerts are completely new?

If you use HTTP/2, does decreasing lingering_timeout or disabling lingering_close for HTTP/2 server help?

comment:5 by Maxim Dounin <mdounin@…>, 3 months ago

In 7698:5440ff4ac6fc/nginx:

Core: reusing connections in advance.

Reworked connections reuse, so closing connections is attempted in
advance, as long as number of free connections is less than 1/16 of
worker connections configured. This ensures that new connections can
be handled even if closing a reusable connection requires some time,
for example, for a lingering close (ticket #2017).

The 1/16 ratio is selected to be smaller than 1/8 used for disabling
accept when working with accept mutex, so nginx will try to balance
new connections to different workers first, and will start reusing
connections only if this won't help.

comment:6 by Maxim Dounin, 3 months ago

Resolution: fixed
Status: newclosed

Should be fixed now. Additionally, it should be easier to find out you are running out of worker connections before this actually happens, see b9071b875194. Thanks for reporting this.

Note: See TracTickets for help on using tickets.