Как настроить memprof в приложении Rails 3?

(Прежде всего, я не говорю по-английски так хорошо, как хотел бы, надеюсь, вы простите мои ошибки:S)

Я очень новичок в Ruby и Rails, и я очень смущен и расстроен из-за утечек памяти, которые возникают в моем приложении, когда оно работает в производственном режиме.

Мой сервер закрывает мое приложение, потому что оно достигает 800 МБ памяти:O Я зашел в Google и нашел, что одним из решений является использование инструмента для поиска утечек: Bleackhouse (мне не удалось установить приложение) или memprof (никаких проблем по его установке) .

Я устанавливаю Memprof с:

$ gem install memprof

После установки я мог бы использовать его с "irb" и протестировать его, но я не могу заставить его работать с моим приложением Rails 3, я знаю, что это потому, что я очень новичок с Rails:(

Я прочитал слишком много веб-сайтов, статей и слайдов о memprof, но я не нашел ссылок, объясняющих, как установить его в Rails.

Я добавляю эти строки в мой config/environment.rb

require `gem which memprof/signal`.strip

конфиг /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'
...

Я действительно не знаю, почему я могу запустить Memprof в IRB, но я не могу использовать его с моим приложением Rails.


Изменить 1:

Я делаю советы, которые дает Фредерик Чунг, и теперь я его запустил, но я не знаю, как его запустить и записать данные в файл json: S

Буду очень признателен, если кто-нибудь сможет мне помочь с этим вопросом.

Благодарю.

1 ответ

Решение

С этим сигналом вам просто нужно отправить сигнал 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)
Другие вопросы по тегам