(首先,我英语说得不像我希望的那样好,希望你原谅我的错误。)
我是Ruby和Rails的新手,我非常困惑和沮丧,因为我的应用程序在生产模式下运行时内存泄漏。
我的服务器正在关闭我的应用程序,因为它达到了800 My的内存:O我已经在google上找到了它,我发现一个解决方案是使用工具查找泄漏: Bleackhouse (我还没有安装应用程序)或memprof (安装它没有问题)。
我安装memprof时:
$ gem install memprof一旦安装好,我就可以用"irb“来测试它了,但是让它在我的Rails 3应用程序中运行是不可能的,我知道这是因为我是Rails的新手:
我读过太多关于memprof的网站、图托斯和幻灯片,但我找不到任何说明如何在Rails中安装它的参考资料。
我将这些行添加到config/environment.rb中
require `gem which memprof/signal`.stripconfig/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客运)时,它会抛出一个错误:
"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:
我做了张弗雷德里克给出的建议,现在我让它运行,但我不知道如何启动它并将数据写入json文件:S。
如果有人能帮我解决这个问题,我将非常感激。
谢谢。
发布于 2012-05-11 10:56:50
有了信号,您只需要发送一个URG信号(杀死-s URG ),它就会写入/tmp中的一个文件。
您还可以使用memprof包含的中间件(见文件 )。
有两个中间件,允许您用Memprof.track或Memprof.trace_request包装每个请求。您可以通过将其放入初始化器(在配置/初始化器中)来打开它们。
require 'memprof/middleware'
config.middlewares.use(Memprof::Middleware)
require 'memprof/tracer'
config.middleware.insert(0, Memprof::Tracer)https://stackoverflow.com/questions/10547621
复制相似问题