Welcome! Log In Create A New Profile

Advanced

[nginx] Core: disabled cloning sockets when testing config (ticket #2188).

Maxim Dounin
May 31, 2021 10:40AM
details: https://hg.nginx.org/nginx/rev/c860f0b7010c
branches:
changeset: 7867:c860f0b7010c
user: Maxim Dounin <mdounin@mdounin.ru>
date: Mon May 31 16:36:37 2021 +0300
description:
Core: disabled cloning sockets when testing config (ticket #2188).

Since we anyway do not set SO_REUSEPORT when testing configuration
(see ecb5cd305b06), trying to open additional sockets does not make much
sense, as all these additional sockets are expected to result in EADDRINUSE
errors from bind(). On the other hand, there are reports that trying
to open these sockets takes significant time under load: total configuration
testing time greater than 15s was observed in ticket #2188, compared to less
than 1s without load.

With this change, no additional sockets are opened during testing
configuration.

diffstat:

src/event/ngx_event.c | 27 +++++++++++++++------------
1 files changed, 15 insertions(+), 12 deletions(-)

diffs (39 lines):

diff -r 7e4aeb464642 -r c860f0b7010c src/event/ngx_event.c
--- a/src/event/ngx_event.c Mon May 31 16:36:12 2021 +0300
+++ b/src/event/ngx_event.c Mon May 31 16:36:37 2021 +0300
@@ -441,20 +441,23 @@ ngx_event_init_conf(ngx_cycle_t *cycle,

#if (NGX_HAVE_REUSEPORT)

- ls = cycle->listening.elts;
- for (i = 0; i < cycle->listening.nelts; i++) {
-
- if (!ls[i].reuseport || ls[i].worker != 0) {
- continue;
- }
-
- if (ngx_clone_listening(cycle, &ls[i]) != NGX_OK) {
- return NGX_CONF_ERROR;
- }
-
- /* cloning may change cycle->listening.elts */
+ if (!ngx_test_config) {

ls = cycle->listening.elts;
+ for (i = 0; i < cycle->listening.nelts; i++) {
+
+ if (!ls[i].reuseport || ls[i].worker != 0) {
+ continue;
+ }
+
+ if (ngx_clone_listening(cycle, &ls[i]) != NGX_OK) {
+ return NGX_CONF_ERROR;
+ }
+
+ /* cloning may change cycle->listening.elts */
+
+ ls = cycle->listening.elts;
+ }
}

#endif
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Core: disabled cloning sockets when testing config (ticket #2188).

Maxim Dounin 135 May 31, 2021 10:40AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

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