[nginx] Introduced worker_shutdown_timeout.

洪志道 hongzhidao at gmail.com
Thu Mar 9 12:53:54 UTC 2017


"First of all, we can set timeout zero if need to exit immediately."

It's not a good idea.

2017-03-09 20:52 GMT+08:00 洪志道 <hongzhidao at gmail.com>:

> I get it.
>
> Yep, we can do the cleanup work  in exit process or pool cleanup when
> expired time happened.
>
> I keep my opinion that it's useful and helpful if we set *ngx_shutdown_event.cancelable
> = 0.*
>
> First of all, we can set timeout zero if need to exit immediately.
> The key point is whether we need to invoke event handler
> like ngx_http_log_flush_handler.
> And I think it's more convenient to do the consequent things,
> we still have the event information in event handler, but not sure in exit
> process phase.
>
> By the way, is it a problem if I try to set *ngx_shutdown_event.cancelable
> = 0.*
>
> Thanks again.
>
> 2017-03-09 20:29 GMT+08:00 Maxim Dounin <mdounin at mdounin.ru>:
>
>> Hello!
>>
>> On Thu, Mar 09, 2017 at 02:39:26PM +0800, 洪志道 wrote:
>>
>> [...]
>>
>> > "Cancelable timers are now preserved if there are other timers. There
>> is no
>> > need to cancel timers early if there are other timers blocking shutdown
>> > anyway. Preserving such timers allows nginx to continue some periodic
>> work
>> > till the shutdown is actually possible. With the new approach, timers
>> with
>> > ev->cancelable are simply ignored when checking if there are any timers
>> > left during shutdown."
>> >
>> > But how to do the timers those are cancelable such as buffer-event in
>> log
>> > module.
>> > When the worker process is shutting down, they lose the chance to do
>> > registered handler.
>> > Even so the log module also works well because of
>> 'ngx_conf_flush_files'.
>>
>> Cancelable timers are expected to do it's work normally until the
>> actual shutdown is possible, but will not delay shutdown.
>>
>> You can't relay on them to do any cleanup work though, as they
>> will not be called in many cases.  For example, much like any
>> other timers they will not be called on fast shutdown (aka
>> ngx_terminate).  To do a cleanup work you should use cleanup
>> handlers and/or exit_process callbacks.
>>
>> In particular, the log module uses cancelable timers to do
>> periodic flushes while the process is still running.  The final
>> flush will be done on the process exit in the
>> ngx_conf_flush_files() exit_process callback.
>>
>> --
>> Maxim Dounin
>> http://nginx.org/
>> _______________________________________________
>> nginx-devel mailing list
>> nginx-devel at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20170309/acce4edb/attachment.html>


More information about the nginx-devel mailing list