我有一个在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"