【发布时间】:2012-05-11 08:00:15
【问题描述】:
(首先我的英语说得不太好,希望你能原谅我的错误:S)
我是 Ruby 和 Rails 的新手,我非常困惑和沮丧,因为我的应用程序在生产模式下运行时出现内存泄漏。
我的服务器正在关闭我的应用程序,因为它达到了 800MB 的内存:O 我在谷歌上搜索过它,我发现一种解决方案是使用一种工具来查找泄漏: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
如果有人能帮助我解决这个问题,我将不胜感激。
谢谢。
【问题讨论】:
-
为什么要以这种有趣的方式要求它而不是将其添加到您的 Gemfile 中?
-
您说我必须将“gem 'memprof'”添加到我的 Gemfile 中,然后执行“$ bundle install”?我必须在我的 config/environment.rb 中添加 require
gem which memprof/signal.strip 吗?谢谢。 -
我不会。如果你想要信号的东西,一个普通的 require 'memprof/signal' 就可以了(可能在初始化程序的某个地方)
-
请你写一些例子,我不知道放在哪里:(谢谢
-
Stick require 'memprof/signal' in config/initializers/memprof.rb
标签: ruby-on-rails ruby-on-rails-3 memory-leaks memprof