加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 了解为什么ruby进程阻塞100%CPU的方法

发布时间:2020-12-17 01:19:26 所属栏目:百科 来源:网络整理
导读:我们有一个很大的rails应用程序,并且几天之后,我们的 ruby进程似乎在一个循环中阻塞并吃100%的CPU直到乘客服务器死于502错误. 你知道解决原因的最佳方法吗? 我尝试过New Relic,但它只是性能的东西,我们的错误太多,无法猜测是什么问题. (我们每天都有很多请
我们有一个很大的rails应用程序,并且几天之后,我们的 ruby进程似乎在一个循环中阻塞并吃100%的CPU直到乘客服务器死于502错误.

你知道解决原因的最佳方法吗?

我尝试过New Relic,但它只是性能的东西,我们的错误太多,无法猜测是什么问题. (我们每天都有很多请求和很多UTF-8 BSON错误,因为我们使用的是UTF-8网址)

使用:

>使用Ruby 1.9.2p290的Rails 3.2.6
>乘客3.0.13
> MongoDB 2.0.1与Mongoid 2.4.11
> Nginx
> FreeBSD 8.2

解决方法

找到ruby卡在哪里的一种方便方法是将 gdb附加到正在运行的进程并调用rb_backtrace().这会将当前堆栈跟踪打印到stderr,这可能会定向到日志文件.这是我在博客上找到的 short walk through.堆栈跟踪应该可以帮助您定位流程停滞的位置,并允许您通过代码检查或在关键代码路径周围添加日志记录工具来确定正在进行的操作.

Aman Gupta有一个gdb到ruby hooks库gdb.rb我有时发现它很方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读