2009-01-14 4 views
6

Tengo algunos problemas con mi aplicación Rails que es muy lenta en mi servidor de almacenamiento intermedio. Lo que es más confuso es que la línea final de la salida de registro para cada solicitud.¿Por qué los tiempos de procesamiento de mi servidor Rails no se suman?

Parece que los tiempos de vista y base de datos no son ni cerca de todo el tiempo de renderizado. En una página es tan malo como ~ 1000ms para la finalización, ~ 450ms para la vista y ~ 20ms de la base de datos.

¿De dónde viene el resto del tiempo para procesar la página?

Respuesta

0

Recomiendo usar New Relic's RPM service. Tiene una versión gratuita, pero el servicio Bronze ($ 40 por mes) es maravilloso y ayuda a rastrear estos problemas.

+0

http://www.newrelic.com/ es la URL que desea – RichH

+0

esto no responde a la pregunta y es solo el proxenetismo del servicio: ¿cómo es esta la mejor respuesta o una respuesta? – eyberg

+0

Podría ayudar a entender por qué sus acciones son lentas, que es su verdadera pregunta. De cualquier manera, forma de comentar sobre un comentario de 18 meses: | –

2

Cuando las cosas son misteriosas ... ¡los perfiles son tu amigo!

un generador de perfiles elaborará estadísticas de qué métodos se están llamando más y cuánto tiempo se está gastando en cada llamada al método.

ruby-prof me convence cuando estoy en RubyLand, y producirá un bonito gráfico de llamadas (en formato html si lo desea), que hace que sea agradable y fácil ver qué métodos están ralentizando su solicitud .

0

Estaba a punto de volver a visitar esta pregunta con la misma respuesta, así que simplemente me haré cargo. Aquí hay un muy pequeño ruby-prof snippet de una vista. Es sorprendente la cantidad de cosas que pasan bajo el capó.

0

Además de la representación y el tiempo de la base de datos, dedica un tiempo a su código de controlador y al framework de Rails. Esto puede ser realmente lento si se asignan muy pocos recursos a su servidor de transferencia. Sin embargo, no debe tener en cuenta que las duraciones del registro no siempre son perfectas, especialmente la duración de la base de datos.

0

¿Qué dice tu registro de Apache? Definitivamente tendrá diferentes números para mostrar el tiempo requerido para atender la solicitud.

Apache envía solicitudes a rieles y rieles que funcionan en él y eso es lo que ve en sus registros de producción.

Todo el código HTML tiene que ser renderizado en su navegador (CSS, imágenes, js, etc.). Intenta usar la extensión httpWatch de Firefox para conocer el tiempo de renderización de los elementos de la interfaz de usuario y debería sumarse.

Como se sugirió anteriormente, NewRelic debe darle ruptura decente de tiempo dedicado a diversas actividades (M V C)

2

He encontrado una gran proporción del tiempo de render puede ser gastado en los carriles gestión y preparación para los objetos de Active Record. Después de la consulta y antes de la vista. Dependiendo de cuántos registros se devuelven de un 'buscar', por ejemplo.

Cuestiones relacionadas