ruby-on-rails – 如何配置nginx Unicorn以避免超时错误?
发布时间:2020-12-17 04:17:35 所属栏目:百科 来源:网络整理
导读:我有一个在nginx Unicorn(Ubuntu 12.04)上运行的Rails(v3.2.13,Ruby 2.0.0)应用程序.一切都运行良好,除非管理员用户通过CVS文件上传用户(数千).问题是我将超时设置为30秒,导入过程需要更多时间.所以,30秒后我得到一个nginx 502 Bad Gateway页面(Unicorn work
我有一个在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" 解决方法
这是创建队列的一个很好的理由.
而且你会: >上传csv文件(应该在30秒内) 例如,检查https://github.com/resque/resque.还有很多其他队列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |