【发布时间】:2015-01-19 08:46:21
【问题描述】:
我有一个 Ruby 进程在 m3.medium EC2 实例上连续运行,将队列中的内容渲染到 S3 中。它偶尔会死去(通常一天多次),没有明显的原因,也没有解释。
该应用程序由 elasticbeanstalk 部署,并从运行 ruby --verbose app.rb 的 ebextensions 脚本开始,并将错误和输出管道传输到文件(最初没有 --verbose,但我们添加了它以希望获得更多细节)。退出后,两个文件中都没有任何内容表明有任何错误。应用的顶层如下所示:
loop do
begin
do_processing
rescue Exception => e
puts "Error! #{e}"
end
end
所以它不太可能自行退出或从异常中退出(我认为)。
服务器始终保持运行,并且没有耗尽内存。有时它会在峰值负载(高达 100% 的 CPU)时崩溃,但并非总是如此。
是否有 Ruby 工具可用于获取有关进程退出原因的更多信息?是否有可能我遇到了其他一些 EC2 或 Ruby 限制而关闭了进程?我可以做些什么来获得关于这里发生的事情的更多信息?
【问题讨论】:
-
这听起来不像是一个Ruby问题,如果进程在外部被杀死,而不是异常或段错误,你将不会获得任何相关信息AFAIK。试试
/var/log/syslog,看看有没有线索。
标签: ruby debugging amazon-ec2 crash