有人可以想办法找出我们的rails生产服务器挂起的位置吗?它的CPU为99%所以我认为它会在while / for / each循环中丢失。不幸的是我们找不到候选循环。
在开发过程中不会出现问题,我们的测试套装现在具有100%的代码覆盖率。
我们已经通过gdb附加到Ruby了,但是不知道从那里去哪里。 有什么想法吗?
答案 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)
这不是一个干净的解决方案,但至少以下问题解决了我们的问题:我们迁移到'瘦'网络服务器并删除'设计'。