0
I have an application in Rails that runs with Unicorn in production. Some calls take a long time to process. I set the server to increase the timeout, so that the server does not respond with error. The problem is that if the request takes more than 30 seconds, I get this message:
Service Unavailable
The service is temporarily unavailable. Please Try Again later.
In the unicorn.rb
have timeout 120
configured and in Nginx.conf have:
upstream unicorn_my_app {
server unix:/tmp/my_app.socket fail_timeout=0;
}
server {
listen 80;
client_max_body_size 4G;
server_name www.my_app.com;
proxy_read_timeout 120;
keepalive_timeout 5;
root /home/ubuntu/my_app/current/public;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://unicorn_my_app;
break;
}
}
error_page 404 500 502 503 504 /erro/erro.html;
location = /erro/ {
root /home/ubuntu/my_app/current/public;
}
}
Is there any other setting I forgot?
Try increasing keepalive_timeout to 120.
– GuiGS
It didn’t work @Guigs
– Daniel Cukier
I discovered the problem: my server is behind a Rackspace Load Balancer, which puts 30s timeout. I used these instructions to solve. https://community.rackspace.com/products/f/25/t/89
– Daniel Cukier