我有一个在Nginx Unicorn(Ubuntu 12.04)上运行的Rails(v3.2.13,Ruby 2.0.0)应用程序.一切都运行良好,除非管理员用户通过CVS文件上传用户(数千).问题是我将超时设置为30秒,导入过程需要更多时间.所以,30秒后我得到一个Nginx 502 Bad Gateway页面(Unicorn worker被杀).
显而易见的解决方案是增加超时,但我不希望这样,因为它会导致另一个问题(我猜),因为它不是典型的行为.
有办法处理这类问题吗?
非常感谢提前.
PS:也许解决方案是修改代码.如果是这样,我想避免用户执行另一个请求.
一些想法(不知道是否可能):
>设置专门处理此请求的工作人员.
>向Unicorn发送“正在进行中的工作”信号以避免被杀.
Nginx的-app.conf
upstream xxx {
server unix:/tmp/xxx.socket fail_timeout=0;
}
server {
listen 80;
...
location / {
proxy_pass http://xxx;
proxy_redirect off;
...
proxy_connect_timeout 360;
proxy_send_timeout 360;
proxy_read_timeout 360;
}
}
unicorn.rb
worker_processes 2
listen "/tmp/xxx.socket"
timeout 30
pid "/tmp/unicorn.xxx.pid"
最佳答案