sudden nginx hang -- restart fails, "98: Address already in use"

Maxim Dounin mdounin at mdounin.ru
Thu Feb 6 12:11:25 UTC 2014


Hello!

On Wed, Feb 05, 2014 at 01:53:14PM -0500, dwirth wrote:

> Hello, all. 
> 
> About an hour ago, out of the blue, my server stopped responding to webpage
> requests. We are using nginx + php-fpm on RHEL6.
> 
> # service nginx status
> nginx (pid 31600) is running...
> 
> # service nginx restart
> Stopping nginx:                                            [FAILED]
> Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address
> already in use)
> nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
> nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
> nginx: [emerg] still could not bind()
> 
> I killed the process and was able to restart nginx so the immediate crisis
> is over, but I need to know: What the hell happened? What would cause nginx
> to hang like this? I have googled around and I see several discussions about
> what to do when this happens but zilch about how to keep it from happening.

Such hangs can be caused either by bugs (either in nginx itself, 
or in 3rd party modules; take a look at nginx -V to find out how 
many 3rd party modules you have) or by some serious blocking at 
OS level.  E.g., serving files from an NFS share may easily result 
in such a hang if something happens with the NFS server.

It is impossible to say what happened in your case without 
additional information (at least "ps alx" output whould be 
helpful, and see also http://wiki.nginx.org/Debugging).  General 
recomendations are:

1. Make sure your nginx is up-to-date.  Note that some linux 
distros ship quite outdated versions in their repositories, make 
sure to check version against nginx.org.  Current versions are 
1.5.10 (mainline) and 1.4.4 (stable).

2. Make sure you aren't using things that can easily block, like 
NFS or other network filesystems, or some blocking code in 
embedded languages like embedded perl or lua.  Or, if you do use 
them, expect anything to die if something bad happens.

3. If you are using 3rd party modules, make sure you have good 
reasons to do so.

4. Examine logs for "crit", "alert", "emerge" messages.  If there 
are any, they require investigation, especially messages about 
worker processes "exited on signal".

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list