rails中使用bleak_house

 
Stage1) 使用bleak_house
gem install bleak_house
 
 
在environment.rb中加上:
   require 'bleak_house'
 
 
 
启动
RAILS_ENV = production BLEAK_HOUSE = true ruby-bleak-house  ./ script / server
 
 
错误
/ usr / local / ruby2 / lib / ruby / gems / 1.8 / gems / bleak_house- 3.6 / lib / bleak_house / rails / dispatcher . rb: 8 : undefined local variable or method `callbacks'  for  Dispatcher :Class   ( NameError )
        from 
/ usr / local / ruby2 / lib / ruby / site_ruby / 1.8 / rubygems / custom_require . rb: 27 :in  `gem_original_require'
        from 
/ usr / local / ruby2 / lib / ruby / site_ruby / 1.8 / rubygems / custom_require . rb: 27 :in  `require'
 
解决方法:
作者如是说 :
Yeah, on my blog I mentioned that you need to stick with  - v3. 5.1   if  you still use Rails  1 .2x.
 
源文档: https: // rubyforge.org/forum/forum.php?thread_id=20904&forum_id=13983
 
要么升级rails至2.0,要么降级使用bleak_house 3.5.1
我选择了后者,因为我发现我升级rails后,目前的程序有很多错误
 
 
 
请求一个action,你会看到
** bleak_house: enabled  ( log / bleak_house_production . dump )
 
看来 bleak_house在动作了并产生了日志
 
多请求几个,然后
bleak  path / to / log / bleak_house_production . dump
否则回提示
Not  enough frames  for  accurate results .  Please record at least  45  frames .
 
看到分析结果
 
.......................... 
usermanage__friend
/ index / GET leaked per request ( 2 ):
    
379.5  String
    
63.5  Symbol
    
6.0  Array
    
5.5  Hash
    
3.0  Class
    
2.5  Module
    
2.0  ActiveRecord::ConnectionAdapters::MysqlColumn
    
1.5  Usermanage::FriendHelper
    
1.0  ApplicationHelper
    
1.0  Set
    
1.0  Time
    
1.0  # < Module: 0xb76e1b14 >
    
1.0  # < Module: 0xb76e25c8 >
    
1.0  # < Module: 0xb7766e04 >
    
0.5  Usermanage::FriendBlockHelper
    
0.5  Usermanage::MessageHelper
    
0.5  Usermanage::FriendDirHelper
.............................
 
Stage2) 更换启动方式
总不能使用./script/server来启动rails吧,这与我们目前mongrel cluster的启动方式不一致,为了使bleak_house适用我们目前的生产环境,于是:
 
修改environment.rb
 ENV['BLEAK_HOUSE']  =  'true'
 ENV['INTERVAL'] 
=  ' 5 '
 require 'bleak_house'
 
直接启动会报如下错误,典型是因为你没使用bleak_house发布的带patch的ruby版本即(ruby-bleak-house),
/ usr / local / ruby2 / bin / ruby: symbol lookup error:  / usr / local / ruby2 / lib / ruby / gems / 1.8 / gems / bleak_house- 3.5 . 1 / ext / bleak_house / logger / snapshot . so: undefined symbol: rb_gc_heap_slots
 
 
让我们参考下面一段话来得到答案:
 
Matt says (May  06 ,   2007 ): 
Is it possible to monitor a mongrel/rails process this way—or just webrick/rails?
When I use the supplied starting command
,  I wind up with a ‘normal’ ruby process ,  not a ruby-bleak-house process.
I suppose I could symlink my /usr/local/bin/ruby to my ruby-bleak-house.
evansays (June 
22 ,   2007 ): 
There are various ways you can manually start the server
,  but the symlink is the easiest. The BleakHouse binary is just as reliable as regular Ruby.
 
源文档 < http://blog.evanweaver.com/articles/2007/05/06/leak-proof-direct-heap-instrumentation-for-bleak_house/>
 
于是采用
ln -s ruby-bleak-house ruby
 
 
Ok
 
Stage3) 漂亮的图???
日志随着点击不断增长,你也可以看到文字输出,但是图呢??
 
作者说了下面的话:
 
Question # 2
We really like the graphing
,  is it coming back ever? It seems even in your  " Let me hit you with some knowledge "  post that it was far faster to spot the leak with graphs. Is there a way to hack it onto  3.7 ?

> Question 
2
 
Dunno in my own work I thought the graphs were less useful than the text output
,  so I dropped them. If someone wanted to work on restoring them I would accept a patch (for example bleak --graph) to optionally have graphs too.
 
 
源文档 < https://rubyforge.org/forum/forum.php?thread_id=21064&forum_id=13983>
 
Hey ,  I changed my mind. Version  3.7  restores compatibility with Rails  1.2.6
 
源文档 < http://rubyforge.org/forum/forum.php?thread_id=20904&forum_id=13983>
 
 
 
改用v 3.7,仍然不知道如何使用图,让我拭目以待作者更新的版本
 

你可能感兴趣的:(rails中使用bleak_house)