Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have used nginx and gunicorn to host my website in two servers,

Both server have same versions of packages and website is successfully hosted,

But in one of my server gunicorn always gets timeout and I get error

[CRITICAL]Worker Timeout
Booting worker with pid
Worker cannot boot with pid

And after this I get 502 Badgateway error in webpage. I have to restart the gunicorn process to bring up website.

Following is the error log :

2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)   
2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140

And I get continuos error like this,

2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:57 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE

And worker starts again,

2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [22276] [INFO] Booting worker with pid: 22276

Again Ignoring EPIPE error and this continues until I restart the gunicorn. And when I am getting this error I get 504 gateway error from nginx

share|improve this question
Can you provide more information, please? The command-line you're using to launch Gunicorn would be a good start. – supervacuo Dec 18 '13 at 13:49
Trace the worker to see where it's getting stuck: strace -p <PID> -e trace=network -t – Aryeh Leib Taurog Feb 5 '14 at 18:36
What is the application you are running? You might want to increase the default timeout. – Burhan Khalid Feb 17 '14 at 6:58
Yes Burhan Khalid , for now I have increased proxy_read_timeout to 1200 in nginx and timeout to 3600 in gunicorn configuration. Hope this works – s.m Feb 17 '14 at 9:56
@s.m - did it work? – iamkhush Apr 16 at 8:33

To fix this increase the timeout flag in Nginx,

In Nginx increase proxy_connect_timeout and proxy_read_timeout, you can add the following in nginx.conf file

proxy_connect_timeout 300s;

proxy_read_timeout 300s;

Restart Nginx server

If above fix doesn't work, then increase Gunicorn timeout flag in Gunicorn configuration, default Gunicorn timeout is 30 seconds.

--timeout 90

Gunicorn documentation about timeout

-t INT, --timeout INT 30 Workers silent for more than this many seconds are killed and restarted.

Generally set to thirty seconds. Only set this noticeably higher if you’re sure of the repercussions for sync workers. For the non sync workers it just means that the worker process is still communicating and is not tied to the length of time required to handle a single request.

Gunicorn Docs on Worker Timeouts

Hope this solves it.

share|improve this answer
This solution saved my life after I was looking for a solution all day. If you genuinely have a process that runs longer than 30s (which was my problem), then this is definitely the correct solution. – alexpmil Mar 16 '15 at 22:51
Yes, even we have a scenario that runs longer than 30 seconds, hence we adopted the solution. Nice it helped. – sreekanth Mar 17 '15 at 12:14
We dont have such a scenario. There is a mininal traffic on site, but the workers timeout each day nearly at the same time. Then gets running after 1-2 mins. My setup is nginx - supervisor - gunicorn - django. I have timeout of 120 secs. – iamkhush Apr 15 at 9:55

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.