[英]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.track
或Memprof.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.