From 450659e62a74d2f4abe17c7a0dec77ffd3b9f123 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Wed, 26 Aug 2009 15:12:28 +0000 Subject: twice termination delay only after SIGALRM, otherwise many separate SIGCHLD and SIGIO signals quickly increase delay to the level when SIGKILL is sent --- src/os/unix/ngx_process_cycle.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/os/unix/ngx_process_cycle.c') diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c index 9cf594d7e..21521ec26 100644 --- a/src/os/unix/ngx_process_cycle.c +++ b/src/os/unix/ngx_process_cycle.c @@ -37,6 +37,7 @@ ngx_uint_t ngx_threaded; sig_atomic_t ngx_reap; sig_atomic_t ngx_sigio; +sig_atomic_t ngx_sigalrm; sig_atomic_t ngx_terminate; sig_atomic_t ngx_quit; sig_atomic_t ngx_debug_quit; @@ -142,7 +143,10 @@ ngx_master_process_cycle(ngx_cycle_t *cycle) for ( ;; ) { if (delay) { - delay *= 2; + if (ngx_sigalrm) { + delay *= 2; + ngx_sigalrm = 0; + } ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "termination cycle: %d", delay); -- cgit v1.2.3