From c93ef77262b6f7a09934e11f088702c1f2b2aa4a Mon Sep 17 00:00:00 2001 From: wangyao Date: Mon, 19 Jul 2021 18:34:46 +0800 Subject: [PATCH] change: introduce a new patch for privileged agent process connections. (#751) --- ...privileged_agent_process_connections.patch | 53 +++++++++++++++++++ ...ginx-1.19.9-privileged_agent_process.patch | 36 ++++++------- ...privileged_agent_process_connections.patch | 53 +++++++++++++++++++ util/mirror-tarballs | 7 +++ 4 files changed, 129 insertions(+), 20 deletions(-) create mode 100644 patches/nginx-1.19.3-privileged_agent_process_connections.patch create mode 100644 patches/nginx-1.19.9-privileged_agent_process_connections.patch diff --git a/patches/nginx-1.19.3-privileged_agent_process_connections.patch b/patches/nginx-1.19.3-privileged_agent_process_connections.patch new file mode 100644 index 0000000..c05790c --- /dev/null +++ b/patches/nginx-1.19.3-privileged_agent_process_connections.patch @@ -0,0 +1,53 @@ +diff --git a/src/core/nginx.c b/src/core/nginx.c +index 2e8b692..104d96e 100644 +--- a/src/core/nginx.c ++++ b/src/core/nginx.c +@@ -1029,6 +1029,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle) + ccf->daemon = NGX_CONF_UNSET; + ccf->master = NGX_CONF_UNSET; + ccf->privileged_agent = NGX_CONF_UNSET; ++ ccf->privileged_agent_connections = NGX_CONF_UNSET_UINT; + ccf->timer_resolution = NGX_CONF_UNSET_MSEC; + ccf->shutdown_timeout = NGX_CONF_UNSET_MSEC; + +@@ -1059,6 +1060,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf) + ngx_conf_init_value(ccf->daemon, 1); + ngx_conf_init_value(ccf->master, 1); + ngx_conf_init_value(ccf->privileged_agent, 0); ++ ngx_conf_init_uint_value(ccf->privileged_agent_connections, 512); + ngx_conf_init_msec_value(ccf->timer_resolution, 0); + ngx_conf_init_msec_value(ccf->shutdown_timeout, 0); + +diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h +index e9239ae..af9406e 100644 +--- a/src/core/ngx_cycle.h ++++ b/src/core/ngx_cycle.h +@@ -92,6 +92,7 @@ typedef struct { + ngx_flag_t daemon; + ngx_flag_t master; + ngx_flag_t privileged_agent; ++ ngx_uint_t privileged_agent_connections; + + ngx_msec_t timer_resolution; + ngx_msec_t shutdown_timeout; +diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c +index b1eb322..8e03696 100644 +--- a/src/os/unix/ngx_process_cycle.c ++++ b/src/os/unix/ngx_process_cycle.c +@@ -1208,6 +1208,7 @@ static void + ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data) + { + char *name = data; ++ ngx_core_conf_t *ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); + + /* + * Set correct process type since closing listening Unix domain socket +@@ -1219,7 +1220,7 @@ ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data) + ngx_close_listening_sockets(cycle); + + /* Set a moderate number of connections for a helper process. */ +- cycle->connection_n = 512; ++ cycle->connection_n = ccf->privileged_agent_connections; + + ngx_worker_process_init(cycle, -1); + diff --git a/patches/nginx-1.19.9-privileged_agent_process.patch b/patches/nginx-1.19.9-privileged_agent_process.patch index d33023a..164004e 100644 --- a/patches/nginx-1.19.9-privileged_agent_process.patch +++ b/patches/nginx-1.19.9-privileged_agent_process.patch @@ -1,27 +1,25 @@ diff --git a/src/core/nginx.c b/src/core/nginx.c -index 48a20e9..48329bd 100644 +index 60f8fe7..4bd244b 100644 --- a/src/core/nginx.c +++ b/src/core/nginx.c -@@ -1061,6 +1061,8 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle) +@@ -981,6 +981,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle) ccf->daemon = NGX_CONF_UNSET; ccf->master = NGX_CONF_UNSET; + ccf->privileged_agent = NGX_CONF_UNSET; -+ ccf->privileged_agent_connections = NGX_CONF_UNSET_UINT; ccf->timer_resolution = NGX_CONF_UNSET_MSEC; - ccf->shutdown_timeout = NGX_CONF_UNSET_MSEC; -@@ -1090,6 +1092,8 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf) + ccf->worker_processes = NGX_CONF_UNSET; +@@ -1009,6 +1010,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf) ngx_conf_init_value(ccf->daemon, 1); ngx_conf_init_value(ccf->master, 1); + ngx_conf_init_value(ccf->privileged_agent, 0); -+ ngx_conf_init_uint_value(ccf->privileged_agent_connections, 512); ngx_conf_init_msec_value(ccf->timer_resolution, 0); - ngx_conf_init_msec_value(ccf->shutdown_timeout, 0); + ngx_conf_init_value(ccf->worker_processes, 1); diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h -index 0c47f25..4469390 100644 +index c51b7ff..3261f90 100644 --- a/src/core/ngx_cycle.h +++ b/src/core/ngx_cycle.h @@ -22,6 +22,9 @@ @@ -34,17 +32,16 @@ index 0c47f25..4469390 100644 typedef struct ngx_shm_zone_s ngx_shm_zone_t; typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data); -@@ -89,6 +92,8 @@ struct ngx_cycle_s { +@@ -81,6 +84,7 @@ struct ngx_cycle_s { typedef struct { ngx_flag_t daemon; ngx_flag_t master; + ngx_flag_t privileged_agent; -+ ngx_uint_t privileged_agent_connections; ngx_msec_t timer_resolution; - ngx_msec_t shutdown_timeout; + diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c -index b31485f..bd259c1 100644 +index 7cee1c5..c4f70d6 100644 --- a/src/os/unix/ngx_process_cycle.c +++ b/src/os/unix/ngx_process_cycle.c @@ -15,6 +15,8 @@ static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, @@ -64,7 +61,7 @@ index b31485f..bd259c1 100644 static void ngx_cache_manager_process_handler(ngx_event_t *ev); static void ngx_cache_loader_process_handler(ngx_event_t *ev); -@@ -52,6 +55,8 @@ sig_atomic_t ngx_noaccept; +@@ -51,6 +54,8 @@ sig_atomic_t ngx_noaccept; ngx_uint_t ngx_noaccepting; ngx_uint_t ngx_restart; @@ -105,7 +102,7 @@ index b31485f..bd259c1 100644 live = 1; } -@@ -393,6 +402,26 @@ ngx_start_cache_manager_processes(ngx_cycle_t *cycle, ngx_uint_t respawn) +@@ -393,6 +431,26 @@ ngx_start_cache_manager_processes(ngx_cycle_t *cycle, ngx_uint_t respawn) static void @@ -131,8 +128,8 @@ index b31485f..bd259c1 100644 +static void ngx_pass_open_channel(ngx_cycle_t *cycle) { - ngx_int_t i; -@@ -794,7 +823,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker) + ngx_int_t i; +@@ -794,7 +860,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker) } } @@ -144,14 +141,13 @@ index b31485f..bd259c1 100644 if (setgid(ccf->group) == -1) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, "setgid(%d) failed", ccf->group); -@@ -1144,6 +1176,48 @@ ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data) +@@ -1149,6 +1216,47 @@ ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data) static void +ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data) +{ + char *name = data; -+ ngx_core_conf_t *ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); + + /* + * Set correct process type since closing listening Unix domain socket @@ -163,7 +159,7 @@ index b31485f..bd259c1 100644 + ngx_close_listening_sockets(cycle); + + /* Set a moderate number of connections for a helper process. */ -+ cycle->connection_n = ccf->privileged_agent_connections; ++ cycle->connection_n = 512; + + ngx_worker_process_init(cycle, -1); + @@ -192,7 +188,7 @@ index b31485f..bd259c1 100644 +static void ngx_cache_manager_process_handler(ngx_event_t *ev) { - ngx_uint_t i; + time_t next, n; diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h index 69495d5..5149396 100644 --- a/src/os/unix/ngx_process_cycle.h diff --git a/patches/nginx-1.19.9-privileged_agent_process_connections.patch b/patches/nginx-1.19.9-privileged_agent_process_connections.patch new file mode 100644 index 0000000..c642cfa --- /dev/null +++ b/patches/nginx-1.19.9-privileged_agent_process_connections.patch @@ -0,0 +1,53 @@ +diff --git a/src/core/nginx.c b/src/core/nginx.c +index 269ff84..48329bd 100644 +--- a/src/core/nginx.c ++++ b/src/core/nginx.c +@@ -1062,6 +1062,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle) + ccf->daemon = NGX_CONF_UNSET; + ccf->master = NGX_CONF_UNSET; + ccf->privileged_agent = NGX_CONF_UNSET; ++ ccf->privileged_agent_connections = NGX_CONF_UNSET_UINT; + ccf->timer_resolution = NGX_CONF_UNSET_MSEC; + ccf->shutdown_timeout = NGX_CONF_UNSET_MSEC; + +@@ -1092,6 +1093,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf) + ngx_conf_init_value(ccf->daemon, 1); + ngx_conf_init_value(ccf->master, 1); + ngx_conf_init_value(ccf->privileged_agent, 0); ++ ngx_conf_init_uint_value(ccf->privileged_agent_connections, 512); + ngx_conf_init_msec_value(ccf->timer_resolution, 0); + ngx_conf_init_msec_value(ccf->shutdown_timeout, 0); + +diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h +index 6a9583e..4469390 100644 +--- a/src/core/ngx_cycle.h ++++ b/src/core/ngx_cycle.h +@@ -93,6 +93,7 @@ typedef struct { + ngx_flag_t daemon; + ngx_flag_t master; + ngx_flag_t privileged_agent; ++ ngx_uint_t privileged_agent_connections; + + ngx_msec_t timer_resolution; + ngx_msec_t shutdown_timeout; +diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c +index df25f9d..bd259c1 100644 +--- a/src/os/unix/ngx_process_cycle.c ++++ b/src/os/unix/ngx_process_cycle.c +@@ -1179,6 +1179,7 @@ static void + ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data) + { + char *name = data; ++ ngx_core_conf_t *ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); + + /* + * Set correct process type since closing listening Unix domain socket +@@ -1190,7 +1191,7 @@ ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data) + ngx_close_listening_sockets(cycle); + + /* Set a moderate number of connections for a helper process. */ +- cycle->connection_n = 512; ++ cycle->connection_n = ccf->privileged_agent_connections; + + ngx_worker_process_init(cycle, -1); + diff --git a/util/mirror-tarballs b/util/mirror-tarballs index 0ad5a8f..8bccf0e 100755 --- a/util/mirror-tarballs +++ b/util/mirror-tarballs @@ -126,6 +126,13 @@ if [ "$answer" = "Y" ]; then echo fi +answer=`$root/util/ver-ge "$main_ver" 1.19.3` +if [ "$answer" = "Y" ]; then + echo "$info_txt applying the privileged-agent-process-connections patch" + patch -p1 < $root/patches/nginx-$main_ver-privileged_agent_process_connections.patch || exit 1 + echo +fi + answer=`$root/util/ver-ge "$main_ver" 1.11.2` if [ "$answer" = "Y" ]; then echo "$info_txt applying the single-process-graceful-exit patch"