繁体   English   中英

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

[英]How to configure memprof in a Rails 3 application?

(首先,我的英语说得不好,希望您能原谅我的错误:S)

我是Ruby和Rails的新手,由于在生产模式下运行应用程序时发生内存泄漏,我感到非常困惑和沮丧。

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

我用以下命令安装memprof:

$ gem install memprof

一旦安装,我可以将其与“ irb”一起使用并对其进行测试,但是我无法使其与我的Rails 3应用程序一起运行,我知道这是因为我对Rails非常新手:(

我已经阅读了太多有关memprof的网络,教程和幻灯片,但是找不到任何说明如何在Rails中安装它的参考。

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

require `gem which memprof/signal`.strip

config / 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

如果有人可以帮助我解决这个问题,我将不胜感激。

谢谢。

使用信号东西,您只需要发送一个URG信号(kill -s URG pid),它将写入/ tmp中的文件

您还可以使用memprof包含的中间件( 请参阅文档

有两种中间件,使您可以使用Memprof.trackMemprof.trace_request包装每个请求。 您可以通过将其放入初始化程序(在config / initializers中)来打开它们

require 'memprof/middleware'
config.middlewares.use(Memprof::Middleware)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM