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

Ann*_*001 1 ruby debugging gdb ruby-on-rails

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

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

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

Cas*_*per 10

一旦你将gdb附加到繁忙的循环过程,然后rb_backtrace从gdb 调用:

> call rb_backtrace()
Run Code Online (Sandbox Code Playgroud)

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

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

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