gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:59 25 4
gpt4 key购买 nike

我们有一个大型 Rails 应用程序,几天后,我们的 ruby​​ 进程似乎陷入循环并占用 100% 的 CPU,直到乘客服务器死机并引发 502 错误。

您知道找出原因的最佳方法吗?

我已经尝试过 New Relic,但它只是性能方面的东西,而且我们的错误太多了,无法猜测问题出在哪里。 (我们每天有很多请求和很多 UTF-8 BSON 错误,因为我们使用的是 UTF-8 url)

使用:

  • Rails 3.2.6 和 Ruby 1.9.2p290
  • 乘客 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​​ 钩子(Hook)库 gdb.rb我发现有时很方便。

关于ruby-on-rails - 了解为什么 ruby​​ 进程在 100% CPU 时阻塞的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com