Intercambiando problema para Rieles aplicación en slicehost
-
10-10-2019 - |
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 / p>
Las recomendaciones concretas serían bien recibidos! Gracias
Solución
Parece que sus rieles aplicación utiliza toda la memoria disponible. Yo recomendaría tres cosas:
-
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.
-
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.
-
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.