1

有人能想办法找出我们的 Rails 生产服务器挂在哪里吗?它的 CPU 为 99%,所以我认为它会在 while/for/each 循环中丢失。不幸的是,我们找不到候选循环。

该问题在开发中不会出现,我们的测试套件现在具有 100% 的代码覆盖率。

我们已经通过 gdb 连接到 Ruby,但不知道从那里去哪里。有任何想法吗?

4

2 回答 2

10

将 gdb 附加到繁忙的循环进程后,然后rb_backtrace从 gdb 调用:

> call rb_backtrace()

输出rb_backtrace将类似于崩溃报告,输出将进入您的日志文件,类似于标准 Ruby 错误回溯。

从那里你应该希望已经离解决方案更近了一步,因为你会看到你的 Ruby 代码中的哪个过程卡住了。

您可以在此处查看更多提示:http:
//isotope11.com/blog/getting-a-ruby-backtrace-from-gnu-debugger

于 2013-02-09T12:59:10.380 回答
1

这不是一个干净的解决方案,但至少以下解决了我们的问题:我们迁移到“瘦”网络服务器并删除了“设计”。

于 2013-02-20T14:18:32.257 回答