如何找出为什么rails服务器挂起100%?

时间:2013-02-09 11:33:04

标签: ruby-on-rails ruby debugging gdb

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

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

我们已经通过gdb附加到Ruby了,但是不知道从那里去哪里。 有什么想法吗?

2 个答案:

答案 0 :(得分:10)

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

> call rb_backtrace()

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

从那里开始,您应该已经向解决方案迈进了一步,因为您将看到Ruby代码中的进程被卡住了。

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

答案 1 :(得分:1)

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