ruby-on-rails - modrails - 流氓 ruby​​ 进程消耗 100% cpu

标签 ruby-on-rails ruby passenger mod-rails phusion

我让来自 mod_rails 的 ruby​​ 实例变得“异常”——这些进程不再列在 passenger-status 中并且使用 100% cpu。

除了安装 god/monit 来杀死实例之外,任何人都可以给我一些关于如何防止这种情况的建议吗?我无法在日志中找到任何有帮助的内容。

最佳答案

如果您使用的是 Linux,则可以安装“strace”实用程序来查看 Ruby 进程正在执行的操作,这些操作占用了所有 CPU。这将为您提供良好的低级 View 。它应该在您的包管理器中可用。然后你可以:

$ sudo strace -p 22710
Process 22710 attached - interrupt to quit
...lots of stuff...
(press Ctrl+C)

然后,如果你想在中间停止进程并转储堆栈跟踪,你可以遵循在 Ruby 中使用 GDB 的指南 http://eigenclass.org/hiki.rb?ruby+live+process+introspection ,具体做:

gdb --pid=(ruby process)
session-ruby
stdout_redirect
(in other terminal) tail -f /tmp/ruby_debug.(pid)
eval "caller"

您还可以使用 ruby​​-debug Gem 远程连接到您打开的调试套接字,如 http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger 中所述。

Github 上似乎还有一个与调试 Passenger 实例有关的项目,看起来很有趣,但缺少文档: http://github.com/ddollar/socket-debugger/tree/master

关于ruby-on-rails - modrails - 流氓 ruby​​ 进程消耗 100% cpu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/623205/

相关文章:

ruby-on-rails - Rails/Rspec - 在 Controller 中测试重定向

jquery - Rails 3 中 jQuery 的 AJAX 和 UJS 问题

javascript - Ruby on Rails 生成 Json

ruby-on-rails - Selenium:wait_for_* 和 Selenium RC ruby​​ 驱动程序中的 friend

Python MySQL 与 Ruby MySQL

mysql - 乘客错误 "library not loaded"

ruby-on-rails - 当我尝试使用预签名的 url 上传时,AWS Ruby SDK 给我一个 "The Content-MD5 you specified was invalid."错误

ruby-on-rails - Rails + Faye + Apache : Moving Faye from Thin to Passenger

ruby-on-rails - 当前部署 Rails 应用程序的标准方法是什么?

ruby - 安装 Homebrew 错误