我在轨道上有一个应用程序,它在生产中运行独angular兽。 有一些请求需要花费很长时间来处理。 我已经configuration服务器来增加超时,所以这些请求正常工作。 问题是,当请求需要超过30秒的响应时,我得到这个消息:
暂停服务
该服务暂时不可用。 请稍后再试。
在unicorn.rb我有timeout 120configuration和我的nginx.conf是:
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; } }
有没有其他configuration我忘了?
使用的configuration是正确的。 在这种情况下,问题在于您身后的Rackspace负载均衡,默认情况下会将超时设置为30秒。 要更改Rackspace负载平衡超时值,请按照此说明操作 。 抽象地说,你要做两个API调用:
1)获取一个令牌:
curl -s -d \ '{ "auth": { "RAX-KSKEY:apiKeyCredentials": { "username": "your_api_username", "apiKey": "your_api_key"} } }' \ -H 'Content-Type: application/json' \ 'https://identity.api.rackspacecloud.com/v2.0/tokens' | python -m json.tool
2)更改LB超时:
curl -s -d \ '{"loadBalancer":{ "timeout": 120 } }' \ -H 'X-Auth-Token: token_returned_in_last_request' \ -H 'Content-Type: application/json' \ -X PUT \ 'https://iad.loadbalancers.api.rackspacecloud.com/v1.0/<your_customer_id>/loadbalancers/<your_lb_id>'