Pregunta

Tengo una aplicación alojada Rails 2.3.8 y en ejecución en slicehost (256M). No estoy familiarizado en absoluto con el back-end, que básicamente seguido los pasos de los tutoriales slicehost instalar Apache. El uso de la memoria está muy alto, que luego cambió mi archivo de configuración del Apache para reducir el número MaxClient a 10 ... pero mi rebanada está intercambiando.

Esto es lo que el uso de la memoria me sale después de sólo unos pocos clics en mi sitio:

    top - 23:57:12 up 28 min,  2 users,  load average: 0.43, 0.54, 0.30
Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 97.8%id,  0.1%wa,  0.0%hi,  0.0%si,  2.0%st
Mem:    262364k total,   258656k used,     3708k free,      260k buffers
Swap:   524280k total,   262772k used,   261508k free,     6328k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                       
 4004 web-app   20   0  178m  72m 1888 S    0 28.4   0:04.38 ruby1.8                                        
 4001 web-app   20   0  172m  61m 1932 S    0 24.2   0:02.72 ruby1.8                                        
 3941 root      20   0  164m  57m 1672 S    0 22.5   0:21.44 ruby                                           
 3990 web-app   20   0  209m  21m 1696 S    0  8.4   0:18.00 ruby1.8                                        
 3950 web-app   20   0  165m 7464 1548 S    0  2.8   0:20.40 ruby1.8                                        
 3684 mysql     20   0  224m 6504 2084 S    0  2.5   0:14.34 mysqld                                         
 3938 root      20   0 53632 3048 1036 S    1  1.2   0:01.50 starling                                       
 3839 root      20   0  243m 1456 1248 S    0  0.6   0:00.34 apache2                                        
 3897 www-data  20   0  243m 1452 1072 S    0  0.6   0:00.04 apache2                                        
 3894 www-data  20   0  243m 1368 1008 S    0  0.5   0:00.04 apache2                                        
 3895 www-data  20   0  243m 1220  960 S    0  0.5   0:00.02 apache2                                        
 3888 root      20   0 46520 1204 1100 S    0  0.5   0:02.29 ruby1.8                                        
 3866 root      20   0 17648 1184  896 S    0  0.5   0:00.08 bash                                           
 3896 www-data  20   0  243m 1180  952 S    0  0.4   0:00.00 apache2                                        
 3964 www-data  20   0  243m 1164  956 S    0  0.4   0:00.02 apache2                                        
 3892 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3948 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3962 www-data  20   0  243m 1132  956 S    0  0.4   0:00.02 apache2                                        
 3963 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3965 www-data  20   0  243m 1080  888 S    0  0.4   0:00.00 apache2                                        
 3887 root      20   0 89008  960  796 S    0  0.4   0:00.00 ApplicationPool                                

No estoy seguro de qué hacer a continuación ... podría actualizar a una rebanada más grande, pero por ahora no tengo casi nada de tráfico en esta aplicación, por lo que creo que es más un problema con mi configuración o tal vez mi código

Las recomendaciones concretas serían bien recibidos! Gracias

¿Fue útil?

Solución

Parece que sus rieles aplicación utiliza toda la memoria disponible. Yo recomendaría tres cosas:

  1. Actualización de la memoria en el servidor. 256 no es mucho para una aplicación Rails. El ir a 512 puede aliviar su problema. Si que lo resuelve, entonces tienes que considerar el costo adicional ($ 18 / mes) frente a la cantidad de tiempo que se necesita para rastrear problemas de rendimiento.

  2. perfil de su aplicación para averiguar qué solicitudes están consumiendo la mayor cantidad de memoria. Esto es probable que va a ser lugares donde se está encontrando una gran cantidad de registros y posiblemente incluyendo algunas tablas asociadas también. Hay un par de herramientas que hay para ayudar a limitar las posibles áreas problemáticas. He usado oink pero hay sin duda otros. Una vez que averiguar dónde están los problemas, puede hacer algunos ajustes para tratar de reducir el uso de memoria.

  3. Si se asume que está utilizando pasajeros con Apache, se puede reducir el número de solicitudes simultáneas en el archivo de configuración de pasajeros. Esto podría ser útil para que https: // serverfault.com/questions/15350/running-ruby-on-rails-app-on-apache-passenger-to-much-memory

Otros consejos

En resumen, 256MB es apretado para una aplicación Rails. Que en realidad no da ningún detalle sobre raíles como está ejecutando, pero suponga que está utilizando Apache con el módulo de pasajeros. El módulo de pasajeros se puede configurar en cuántos casos se sigue funcionando. Tiene 4 casos de rubí que se ejecutan bajo la cuenta de web-app. Creo que los que vienen de pasajeros. En la configuración, puede limitar la cantidad de arranques casos de pasajeros. Esto reducirá los requisitos de memoria.

Por otro lado, cuando se trabaja con solamente 256 MB, y cuando sólo es anfitrión de aplicación 1 raíles, podría ser mejor ir a otra configuración. La configuración que utilicé a mí mismo antes era un servidor web Nginx, y un grupo mestizo con 2 perros mestizos (de 192 MB, y la aplicación era sólo para propósitos de prueba). Básicamente eso significa que en un momento dado, puede procesar 2 (2) y sólo carriles solicitudes en paralelo. La instalación no es quizás un poco más difícil que Apache + pasajeros, pero sin duda difícil. Creo que es una solución con más prestaciones cuando se cumple con el 256.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top