[英]Unicorn/nginx /rails4 deployed via mina - 504 gateway timeout and errors in unicorn log
[英]How to configure nginx + Unicorn to avoid timeout errors?
我有一个在nginx + Unicorn(Ubuntu 12.04)上运行的Rails(v3.2.13,Ruby 2.0.0)应用程序。 一切都运行良好,除非管理员用户通过CVS文件上传用户(数千)。 问题是我将超时设置为30秒,导入过程需要更多时间。 所以,30秒后我得到一个nginx 502 Bad Gateway页面(Unicorn worker被杀)。
显而易见的解决方案是增加超时,但我不希望这样,因为它会导致另一个问题(我猜),因为它不是典型的行为。
有办法处理这类问题吗?
非常感谢提前。
PS:也许解决方案是修改代码。 如果是这样,我想避免用户执行另一个请求。
一些想法(不知道是否可能):
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"
这是创建队列的一个很好的理由。 而且你会:
例如,检查https://github.com/resque/resque 。 还有很多其他队列。
有办法处理这类问题吗?
在后台做这份工作。 您应该有一个单独的进程,逐个从队列中获取作业并处理它们。 由于它不能与用户请求一起使用,因此只要需要它就可以完成它的工作。 你不需要独角兽,只需要一个单独的守护进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.