2011-12-23 10 views
8

Problema simple, tengo una aplicación heredada de Rails 2.3 y lleva bastante tiempo hacer cualquier cosa. rake lleva más de 25 segundos, pero no parece que realmente esté sucediendo nada.¿Cómo puedo hacer un perfil de arranque de una aplicación de Rails?

¿Hay alguna manera sencilla que sólo puede obtener algún tipo de volcado de perfiles desde el momento en que la aplicación se está cargando, para ver qué métodos se toman el tiempo más largo?

Una solución para ambos carriles 2.3 y 3.1 sería aún más útil.

+0

Qué Rubí está usando? – rkb

+0

@rkb Actualmente REE, pero puedo usar cualquier otra versión para crear perfiles, ya que todas las gemas son compatibles con 1.9. –

Respuesta

1

Se podría empezar su aplicación con un perfilador de volea, por ejemplo, ruby-prof o perftools.rb. Mientras todavía se está iniciando, inicie una consulta HTTP en su contra, que intentará ir a GET una ruta /kill_me tan pronto como se inicie la aplicación. /kill_me puede causar que su aplicación muera graciosamente llamando al exit. Como resultado, tienes un perfil de tu inicio.

9

Perfil una tarea rake que requiere el entorno de los carriles, algo como esto:

desc "Load it" 
task :loadit => :environment do 

end 

continuación perfil con ruby-prof

ruby -Ilib -S ruby-prof -p graph_html `which rake` loadit > profile.html 

Se debe para trabajar con los carriles de 2.3 sólo han probado en 3.x pero no veo ninguna razón por la que no debería funcionar.

+2

'rake environment' es una tarea que hace precisamente eso: carga el entorno Rails. – rkb

+0

Ah, sí, también podría ejecutar entornos de rake, supongo, pero tal vez le gustaría probar algunos métodos en la tarea de rake como FooModel.all o algo así. – sunkencity

Cuestiones relacionadas