簡體   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