如何在Rails 3应用程序中配置memprof?

时间:2012-05-11 08:00:16

标签: ruby-on-rails ruby-on-rails-3 memory-leaks memprof

(首先,我不会说英语,我希望你原谅我的错误:S)

我是Ruby和Rails的新手,我非常困惑和沮丧,因为我在应用程序中运行生产模式时出现内存泄漏。

我的服务器正在关闭我的应用程序,因为它达到了800MB的内存:我已经谷歌了解它,我发现一个解决方案就是使用工具来查找泄漏:Bleackhouse(我还没设法安装应用程序)或memprof(没有问题安装它)。

我安装了memprof:

$ gem install memprof

一旦安装,我就可以将它与“irb”一起使用并进行测试,但是对我来说,使用我的Rails 3应用程序运行是不可能的,我知道这是因为我是Rails的新手:(

我已经阅读了太多关于memprof的网站,tutos和幻灯片,但我找不到任何解释如何在Rails中安装它的参考资料。

我将这些行添加到我的config / environment.rb

require `gem which memprof/signal`.strip

配置/ environment.rb中:

# -*- encoding : utf-8 -*-

require `gem which memprof/signal`.strip

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
NameApp::Application.initialize!

但是当我运行我的应用程序(Apache + Phusion Passenger)时,它会抛出一个错误:

"Ruby (Rack) application could not be started"

A source file that the application requires, is missing.
It is possible that you didn't upload your application files correctly. Please check whether all your application files are uploaded.
A required library may not installed. Please install all libraries that this application requires.

Error message:
no such file to load --

/path/to/my/app/config/environment.rb   3   in `require'
...

我真的不知道为什么我可以在irb中运行memprof但我不能在我的Rails应用程序中使用它。


修改1:

我做了Frederick Cheung给出的建议,现在我让它运行但我不知道如何启动它并将数据写入json文件:S

如果有人可以帮我解决这个问题,我将非常感激。

感谢。

1 个答案:

答案 0 :(得分:1)

使用信号填充你只需要发送一个URG信号(kill -s URG pid)它会写入/ tmp中的文件

您还可以使用memprof包含的中间件(see the documentation

有两个中间件,允许您使用Memprof.trackMemprof.trace_request打包每个请求。你可以把它放在初始化器(在config / initializers中)

中打开它们
require 'memprof/middleware'
config.middlewares.use(Memprof::Middleware)

require 'memprof/tracer'
config.middleware.insert(0, Memprof::Tracer)