Welcome! Log In Create A New Profile

Advanced

Re: unix sockets are not reused when restarting nginx

Maxim Dounin
May 21, 2018 09:28AM
Hello!

On Sun, May 20, 2018 at 01:20:07PM +0300, Volodymyr Kostyrko wrote:

> Hello.
>
> I'm using nginx 1.14.0 on FreeBSD 11-STABLE. I'm trying to get caching
> for internally generated content so I'm proxying nginx to nginx:
>
> server {
> listen unix:/home/someuser/.media.nginx.sock;
>
> …
> }
>
> This perfectly works when starting nginx initially. However when
> restarting I sometimes get error reopening sockets to serve them:
>
> nginx.error.log:2018/05/14 02:05:30 [emerg] 3583#0: bind() to
> unix:/home/someuser/.site.nginx.sock failed (48: Address already in use)
> nginx.error.log:2018/05/14 02:05:30 [emerg] 3583#0: bind() to
> unix:/home/someuser/.site.nginx.sock failed (48: Address already in use)
> nginx.error.log:2018/05/14 02:05:30 [emerg] 3583#0: bind() to
> unix:/home/someuser/.site.nginx.sock failed (48: Address already in use)
> nginx.error.log:2018/05/14 02:05:30 [emerg] 3583#0: bind() to
> unix:/home/someuser/.site.nginx.sock failed (48: Address already in use)
> nginx.error.log:2018/05/14 02:05:30 [emerg] 3583#0: bind() to
> unix:/home/someuser/.site.nginx.sock failed (48: Address already in use)
>
> This can happen even on boot. Removing sockets allows nginx to start.

Check how do you stop nginx.

nginx removes unix sockets when it is stopped using the TERM and
INT signals (fast shutdown), but not when it is stopped gracefully
using the QUIT signal (graceful shutdown, see
http://nginx.org/en/docs/control.html). This is because graceful
shutdown is normally used during binary upgrade, and open
listening sockets are passed to the new master process, so
removing them will break things. If you are using graceful
shutdown for other purposes than during binary upgrade for some
reason, you have to remove listening unix sockets yourself.

> I also got this error:
>
> error.log:2018/05/07 16:07:49 [notice] 89443#0: getsockopt(TCP_FASTOPEN)
> unix:/home/someuser/.site.nginx.sock failed, ignored (22: Invalid argument)

This is safe to ignore. The following patch will hide this
notice:

diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -305,7 +305,9 @@ ngx_set_inherited_sockets(ngx_cycle_t *c
{
err = ngx_socket_errno;

- if (err != NGX_EOPNOTSUPP && err != NGX_ENOPROTOOPT) {
+ if (err != NGX_EOPNOTSUPP && err != NGX_ENOPROTOOPT
+ && err != EINVAL)
+ {
ngx_log_error(NGX_LOG_NOTICE, cycle->log, err,
"getsockopt(TCP_FASTOPEN) %V failed, ignored",
&ls[i].addr_text);


--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

unix sockets are not reused when restarting nginx

Volodymyr Kostyrko May 20, 2018 06:22AM

Re: unix sockets are not reused when restarting nginx

Maxim Dounin May 21, 2018 09:28AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 270
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready