Binary upgrade with systemd

Lucas Rolff lucas at slcoding.com
Tue Apr 4 11:45:46 UTC 2017


According to the documentation: 
http://nginx.org/en/docs/control.html#upgrade

You'd have to send the QUIT signal to finish off upgrading (replacing) 
the binary during runtime.

Marc Soda wrote:
> I sent WINCH to the old master.  In this case 32277.
>
> After sending WINCH, I can send QUIT to the old master and it exits. 
>  Everything looks fine at that point.  But it seems a little odd to 
> have to do this.
>
>> On Apr 4, 2017, at 4:43 AM, Lucas Rolff <lucas at lucasrolff.com 
>> <mailto:lucas at lucasrolff.com>> wrote:
>>
>> Hello Marc,
>>
>> For which PID do you send the WINCH signal?
>>
>>
>> From: nginx <nginx-bounces at nginx.org 
>> <mailto:nginx-bounces at nginx.org>> on behalf of Marc Soda 
>> <marc at soda.fm <mailto:marc at soda.fm>>
>> Reply-To: "nginx at nginx.org <mailto:nginx at nginx.org>" <nginx at nginx.org 
>> <mailto:nginx at nginx.org>>
>> Date: Tuesday, 4 April 2017 at 04.04
>> To: "nginx at nginx.org <mailto:nginx at nginx.org>" <nginx at nginx.org 
>> <mailto:nginx at nginx.org>>
>> Subject: Binary upgrade with systemd
>>
>>     Hello,
>>
>>     I’m using nginx 1.10.3 custom built on Ubuntu 16.04.  I’m also
>>     using the recommended systemd service file:
>>
>>     [Unit]
>>     Description=The NGINX HTTP and reverse proxy server
>>     After=syslog.target network.target remote-fs.target nss-lookup.target
>>
>>     [Service]
>>     Type=forking
>>     PIDFile=/run/nginx.pid
>>     ExecStartPre=/usr/sbin/nginx -t
>>     ExecStart=/usr/sbin/nginx
>>     ExecReload=/bin/kill -s HUP $MAINPID
>>     ExecStop=/bin/kill -s QUIT $MAINPID
>>     PrivateTmp=true
>>
>>     [Install]
>>     WantedBy=multi-user.target
>>
>>     I’m try to do a no downtime upgrade with the USR2 and WINCH
>>     signals.  Here is my process list before:
>>
>>     root     32277  0.0  0.4 1056672 71148 ?       Ss   21:51   0:00
>>     nginx: master process /usr/local/nginx/sbin/nginx
>>     www      32278  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32279  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32280  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32281  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32282  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32283  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32288  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32289  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32290  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32291  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32292  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32293  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32294  0.0  0.4 1056672 72212 ?       S    21:51   0:00
>>      \_ nginx: cache manager process
>>
>>     and here it is after sending USR2:
>>
>>     root     32277  0.0  0.4 1056672 71868 ?       Ss   21:51   0:00
>>     nginx: master process /usr/local/nginx/sbin/nginx
>>     www      32278  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32279  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32280  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32281  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32282  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32283  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32288  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32289  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32290  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32291  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32292  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32293  0.0  0.4 1057924 73152 ?       S<   21:51   0:00
>>      \_ nginx: worker process
>>     www      32294  0.0  0.4 1056672 72212 ?       S    21:51   0:00
>>      \_ nginx: cache manager process
>>     root     32461  5.5  0.5 1056676 82316 ?       S    22:01   0:00
>>      \_ nginx: master process /usr/local/nginx/sbin/nginx
>>     www      32465  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32466  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32467  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32468  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32469  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32470  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32471  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32472  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32473  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32474  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32475  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32476  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32477  0.0  0.4 1056676 72176 ?       S    22:01   0:00
>>          \_ nginx: cache manager process
>>     www      32478  0.0  0.4 1056676 72176 ?       S    22:01   0:00
>>          \_ nginx: cache loader process
>>
>>     Notice how the new master is a child of the old master.  If I
>>     send a WINCH I get:
>>
>>     root     32277  0.0  0.4 1056672 71868 ?       Ss   21:51   0:00
>>     nginx: master process /usr/local/nginx/sbin/nginx
>>     root     32461  0.2  0.5 1056676 82316 ?       S    22:01   0:00
>>      \_ nginx: master process /usr/local/nginx/sbin/nginx
>>     www      32465  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32466  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32467  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32468  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32469  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32470  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32471  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32472  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32473  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32474  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32475  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32476  0.0  0.4 1057928 73052 ?       S<   22:01   0:00
>>          \_ nginx: worker process
>>     www      32477  0.0  0.4 1056676 72176 ?       S    22:01   0:00
>>          \_ nginx: cache manager process
>>     www      32478  0.0  0.4 1056676 72176 ?       S    22:01   0:00
>>          \_ nginx: cache loader process
>>
>>     which is not what I’m looking for.  Is this a limitation when
>>     running with systemd?
>>
>>     Thanks,
>>     Marc
>>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org <mailto:nginx at nginx.org>
>> http://mailman.nginx.org/mailman/listinfo/nginx
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20170404/bb89fd23/attachment.html>


More information about the nginx mailing list