2009-05-13 15 views
6

Mis sitios de rails ejecutan Mongrel, tengo un problema con la cantidad de memoria que se está utilizando. Mis procesos de ruby-bin están usando aproximadamente 66 MB de memoria residente. ¿Cómo puedo reducir la cantidad de memoria utilizada por los rieles?Reduce la memoria de los rieles mestizos y aumenta el rendimiento?

No es muy económico tener muchos servidores de raíles ejecutándose en una sola máquina si están consumiendo memoria a este ritmo. Mis procesos php5 fcgi se encuentran entre 15-25 MB.

No estoy familiarizado con RoR, ¿usaría la ayuda de JRuby? Cualquier comentario útil para reducir la huella de memoria y aumentar el rendimiento son más que bienvenidos.

Respuesta

7

Puede consultar Phusion Passenger y Ruby Enterprise Edition, que es la configuración estándar de facto para las aplicaciones de Rails actualmente. Uno de sus objetivos es cortar el uso de la memoria. También es más simple que tener un montón de Mongrels.

+0

+1 En segundo lugar la recomendación del pasajero. –

+0

+1 En segundo lugar, recomiendo REE, ya que incluye los parches MBARI que consumen mucha menos memoria. Eso o 1.9 también usa menos. También asegúrese de que está ejecutando un sistema operativo de 32 bits siempre que sea posible. – rogerdpack

3

Si no estás vinculado a apache por otra cosa, también probaría nginx con Phusion Passenger. Si le preocupa el uso de memoria, debería ver una huella más pequeña desde nginx que apache, y la última versión de Passenger descargará, compilará e instalará nginx por usted con dolores de cabeza mínimos.

1

No iría tan lejos como para decir que Passenger es el estándar de facto, pero está ganando mucha tracción. Acabamos de cambiar a Nginx + Passenger, y nuestra huella de memoria de la aplicación ruby ​​(es decir, Mongrels vs. Passenger) cayó de aproximadamente 450 MB a 295 MB. Puede caer menos, ya que Passenger matará los procesos si están inactivos (esto es configurable), pero por supuesto si está recibiendo tráfico y está usando todas las instancias en las que lo tiene configurado, entonces usarán la memoria en consecuencia .

Tenga en cuenta que aún no utilizamos Ruby Enterprise Edition en nuestra configuración (principalmente porque todavía no está disponible en Engine Yard), pero todavía estamos viendo una huella de memoria más pequeña. La memoria fue la principal razón inicial por la que hicimos el cambio, pero existen otros beneficios, como una configuración más rápida y sencilla para escalar hacia arriba o hacia abajo, y así sucesivamente.

3

También puede reemplazar su proceso mongrel con Thin, que es más eficiente y recientemente ha sido parcheado en su recolección de basura (a través de máquina de eventos), para hacerlo aún mejor.

Utilizamos thin cluster detrás de las interfaces nginx con buenos resultados.

Cuestiones relacionadas