2012-05-11 6 views
0

(Tout d'abord, je ne parle pas anglais aussi bien que je souhaite, j'espère que vous pardonnez mes erreurs: S)Comment configurer memprof dans une application Rails 3?

Je suis très débutant avec Ruby et Rails et je suis très confus et frustré à cause de la mémoire fuites que j'ai dans mon application quand il fonctionne en mode production.

Mon serveur est en train de fermer mon application car il atteint 800 Mo de mémoire: O J'en ai parlé à google et j'ai trouvé qu'une solution est d'utiliser un outil pour trouver des fuites: Bleackhouse (je n'ai pas réussi à installer l'application) ou memprof (pas de problèmes pour l'installer).

Je memprof installer avec:

$ gem install memprof 

Je Une fois installé pourrait l'utiliser avec « RIR » et de le tester, mais il est imposible de me faire courir avec mes Rails 3 application, je sais qu'il est parce que je suis novice très avec Rails :(

J'ai lu trop de toiles, tutos et diapositives sur memprof mais je ne peux trouver aucune référence qui explique comment l'installer dans Rails.

ajouter ces lignes à ma 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! 

mais quand je lance mon application (Apache + Phusion passagers), il renvoie une erreur:

"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' 
... 

Je ne sais vraiment pas pourquoi Je pourrais lancer memprof dans irb mais je ne peux pas l'utiliser avec mon application Rails.


Edit 1:

Je fais les conseils que Frédéric Cheung donner, et maintenant je l'ai eu en cours d'exécution, mais je ne sais pas comment commencer et écrire les données dans un fichier JSON: S

Je serais très reconnaissant si quelqu'un pouvait m'aider avec ce problème.

Merci.

+0

Pourquoi exigez-vous que dans tha t drôle de façon de l'ajouter à votre Gemfile? –

+0

Vous dites que je dois ajouter "gem 'memprof'" à mon Gemfile et ensuite faire "$ bundle installer"? Ai-je besoin de mettre 'gem which memprof/signal'.strip dans mon fichier config/environment.rb? Merci. – torhector2

+0

Je ne le ferais pas.Si vous voulez les trucs de signal, un simple require 'memprof/signal' fera (quelque part dans un initiateur peut-être) –

Répondre

1

Avec les trucs de signal que vous avez juste besoin d'envoyer un signal URG (kill -s URG pid) et il va écrire dans un fichier/tmp

Vous pouvez également utiliser utiliser le middleware memprof comprend (see the documentation

il y a deux intergiciels, qui vous permettent d'envelopper chaque demande soit avec Memprof.track ou Memprof.trace_request. vous pouvez les activer en mettant cela dans un initialiseur (dans config/initializers)

require 'memprof/middleware' 
config.middlewares.use(Memprof::Middleware) 

require 'memprof/tracer' 
config.middleware.insert(0, Memprof::Tracer) 
Questions connexes