【问题标题】:Unicorn worker timeout on AWS boxesAWS 盒子上的独角兽工作人员超时
【发布时间】:2014-12-31 19:02:45
【问题描述】:

我正在尝试在 AWS 机器上设置 Unicorn,但工作人员总是超时,我不知道为什么。

我正在使用 Ubuntu Server 14.04 LTS AMI,安装标准 Ruby on Rails 安装所需的一切。使用 rails new,我生成了一个空的应用程序并尝试第一次访问它似乎很快,但之后工作人员只是不断超时并且需要永远为网页提供服务。加载标准的 WEBrick 服务器没有这个问题,并且几乎可以立即加载页面。我尝试回滚了几个版本的 ruby​​ 和 unicorn,但都没有成功。此行为不会在 VM 本地发生。

这里是调试模式下运行的服务器的日志

我,[2014-11-04T18:30:13.290599 #17134] INFO -- : 监听 addr=0.0.0.0:5000 fd=10 我,[2014-11-04T18:30:13.362993 #17134] INFO -- : 主进程就绪 我,[2014-11-04T18:30:13.363098 #17137] INFO -- : worker=0 准备好了 我,[2014-11-04T18:30:13.365175 #17140] INFO -- : worker=1 准备好了 我,[2014-11-04T18:30:13.365314 #17142] INFO -- : worker=2 准备好了 /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:443 处的异常“LoadError” - 无法加载此类文件 -- rails/application_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:352 处的异常“LoadError” - 无法加载此类文件 -- rails/application_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:313 处的异常“LoadError”-没有要加载的文件--rails/application_helper /var/lib/gems/2.1.0/gems/actionpack-4.1.7/lib/abstract_controller/helpers.rb:154 处的异常“AbstractController::Helpers::MissingHelperError” - 缺少帮助文件 helpers/rails/application_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:443 处的异常“LoadError” - 无法加载此类文件 -- rails/welcome_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:352 处的异常“LoadError” - 无法加载此类文件 -- rails/welcome_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:313 处的异常“LoadError”-没有要加载的文件--rails/welcome_helper /var/lib/gems/2.1.0/gems/actionpack-4.1.7/lib/abstract_controller/helpers.rb:154 处的异常“AbstractController::Helpers::MissingHelperError” - 缺少帮助文件 helpers/rails/welcome_helper.rb **** - - [2014 年 11 月 4 日 18:30:13] “GET / HTTP/1.1” 200 - 0.0693 **** - - [2014 年 11 月 4 日 18:30:14] “GET %2Ffavicon.ico HTTP/1.1”304 - 0.0441 E,[2014-11-04T18:30:45.395879 #17134] 错误 -- : worker=0 PID:17137 超时(31s > 30s),杀死 E,[2014-11-04T18:30:45.395995 #17134] 错误 -- : worker=1 PID:17140 超时(31s > 30s),杀死 E,[2014-11-04T18:30:45.396072 #17134] 错误——:worker=2 PID:17142 超时(31s > 30s),杀死 E,[2014-11-04T18:30:45.397748 #17134] 错误 -- : reaped #worker=2 E,[2014-11-04T18:30:45.397882 #17134] 错误 -- : worker=0 PID:17137 超时(31s > 30s),杀死 E,[2014-11-04T18:30:45.397990 #17134] 错误——:worker=1 PID:17140 超时(31s > 30s),杀死 E,[2014-11-04T18:30:45.401016 #17134] 错误 -- : reaped #worker=1 E,[2014-11-04T18:30:45.401177 #17134] 错误 -- : worker=0 PID:17137 超时(31s > 30s),杀死 我,[2014-11-04T18:30:45.402352 #17148] INFO -- : worker=2 准备好了 E,[2014-11-04T18:30:45.403784 #17134] 错误 -- : reaped #worker=0 我,[2014-11-04T18:30:45.405625 #17152] INFO -- : worker=1 准备好了 我,[2014-11-04T18:30:45.406871 #17155] INFO -- : worker=0 准备好了 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:443 处的异常“LoadError” - 无法加载此类文件 -- rails/application_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:352 处的异常“LoadError” - 无法加载此类文件 -- rails/application_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:313 处的异常“LoadError”-没有要加载的文件--rails/application_helper /var/lib/gems/2.1.0/gems/actionpack-4.1.7/lib/abstract_controller/helpers.rb:154 处的异常 `AbstractController::Helpers::MissingHelperError' - 缺少帮助文件 helpers/rails/application_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:443 处的异常“LoadError” - 无法加载此类文件 -- rails/welcome_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:352 处的异常“LoadError” - 无法加载此类文件 -- rails/welcome_helper.rb /var/lib/gems/2.1.0/gems/activesupport-4.1.7/lib/active_support/dependencies.rb:313 处的异常“LoadError”-没有要加载的文件--rails/welcome_helper /var/lib/gems/2.1.0/gems/actionpack-4.1.7/lib/abstract_controller/helpers.rb:154 处的异常 `AbstractController::Helpers::MissingHelperError' - 缺少帮助文件 helpers/rails/welcome_helper.rb **** - - [2014 年 11 月 4 日 18:31:14] “GET / HTTP/1.1” 200 - 0.0680 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 /var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常“EOFError” - 到达文件末尾 E, [2014-11-04T18:31:45.465765 #17134] 错误 -- : worker=2 PID:17148 timeout (31s > 30s), 杀 E,[2014-11-04T18:31:45.468770 #17134] 错误 -- : reaped #worker=2 我,[2014-11-04T18:31:45.472177 #17162] INFO -- : worker=2 准备好了 E,[2014-11-04T18:31:49.474506 #17134] 错误 -- : worker=1 PID:17152 超时(31s > 30s),杀死 E, [2014-11-04T18:31:49.474633 #17134] 错误 -- : worker=0 PID:17155 timeout (31s > 30s), 杀 E,[2014-11-04T18:31:49.476313 #17134] 错误 -- : reaped #worker=1 E,[2014-11-04T18:31:49.476451 #17134] 错误 -- : worker=0 PID:17155 超时(31s > 30s),杀死 我,[2014-11-04T18:31:49.481324 #17166] INFO -- : worker=1 准备好了 E,[2014-11-04T18:31:49.481548 #17134] 错误 -- : reaped #worker=0 我,[2014-11-04T18:31:49.484368 #17169] INFO -- : worker=0 准备好了 E,[2014-11-04T18:32:17.511012 #17134] 错误 -- : worker=2 PID:17162 超时(31s > 30s),杀死 E,[2014-11-04T18:32:17.512733 #17134] 错误 -- : reaped #worker=2 我,[2014-11-04T18:32:17.516074 #17174] INFO -- : worker=2 准备好了 E,[2014-11-04T18:32:21.518316 #17134] 错误 -- : worker=0 PID:17169 超时(31s > 30s),杀死 E,[2014-11-04T18:32:21.520011 #17134] 错误 -- : reaped #worker=0 我,[2014-11-04T18:32:21.523230 #17177] INFO -- : worker=0 准备好了

这里是独角兽配置文件​​

worker_processes 整数(ENV["WEB_CONCURRENCY"] || 3) 超时 30 preload_app 真 before_fork 做 |服务器,工人| Signal.trap 'TERM' 做 放“独角兽大师拦截 TERM 并发送自己 QUIT 代替” Process.kill '退出',Process.pid 结尾 定义?(ActiveRecord::Base)和 ActiveRecord::Base.connection.disconnect! 结尾 after_fork 做 |服务器,工人| Signal.trap 'TERM' 做 puts '独角兽工人拦截 TERM 并且什么都不做。等待master发送QUIT' 结尾 定义?(ActiveRecord::Base)和 ActiveRecord::Base.establish_connection 结尾

我确实注意到了 EOF 错误,并怀疑这可能与超时有关,但我不确定。

/var/lib/gems/2.1.0/gems/unicorn-4.8.1/lib/unicorn/http_request.rb:79 处的异常 `EOFError' - 到达文件末尾

【问题讨论】:

  • 超时用于请求;看起来你正在用一个永远不会完成的请求来打击独角兽工人。问题似乎不在于独角兽本身。

标签: ruby-on-rails ruby gem rubygems unicorn


【解决方案1】:

所以问题似乎是我正在私下运行 AWS 实例(没有公共 IP),然后将其连接到负载均衡器。移除负载均衡器并直接访问实例解决了工作线程超时的问题,并且我没有得到性能下降。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2012-05-27
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多