Ruby内存分析堆 - Ruby 2.0

时间:2013-12-13 22:23:42

标签: ruby-on-rails ruby profiling heap unicorn

我正在运行带有4名工作人员的Rails4和Ruby2.0,很快就会有极轻的流量,4名Unicorn工作人员很快会占用4G内存。

我正在尝试分析rails / Ruby堆并且没有成功地理解导致膨胀的原因或是否存在泄漏

以下是我尝试的一些事情:

  • memprof用于个人资料的开始和停止。不在活跃的开发中。
  • 远程撬
    • 可以附加,但ObjectSpace没有给出太多,因为大多数对象都是字符串,并且没有重要的其他对象,也无法找到对象引用。
    • 该应用程序冻结侦听远程撬连接,这使得应用程序无用且无法真正连接到实时应用程序!
  • GDB
    • 看起来很强大但很难让它发挥作用
    • 抱怨缺少C lib等
    • 大多数优秀的钩子都适用于Ruby Enterprise Edition(REE)
  • Oink。很好地显示哪些交易高于内存阈值
  • Sigdump。工作,但再次只显示课程数量。 1M + String,1M + Array并不能说明我是否看不到引用等。
    Built-in objects:
    567,479: TOTAL
    272,576: T_STRING
    112,326: T_ARRAY
    54,764: T_DATA
    49,431: T_NODE
    47,363: T_OBJECT
     9,758: T_HASH
     9,563: T_CLASS
     3,600: T_REGEXP
     2,729: T_ICLASS
     1,948: T_MATCH
    
  • memprof。看起来非常好但不支持Ruby 1.9+ :(
  • bleak_house。已弃用,说使用Kiji,这是一个ruby运行时由twitter

以上所有, 只有Oink非常有用,我可以找到一个rails Controller#show事务来获得超过25MB的内存,但是如何进一步分析它呢?

0 个答案:

没有答案
相关问题