Generalidades
Este artículo explica cómo tu VPS usa memoria y las diferentes opciones para monitorear y solucionar problemas de memoria que puedan aparecer.
Requisitos previos
Para correr los comandos en ester artículo vía SSH, debes tener configurado un usuario Shell en tu panel y tener conocimiento general del Shell de UNIX.
Bases del uso de memoria
Cada VPS de DreamHost utiliza aproximadamente 100 MB de memoria como línea base sin ningún proceso de usuario en ejecución. Esto se debe a que varios procesos del sistema deben ejecutarse para que su VPS funcione (por ejemplo, sshd, proftpd). Esto debe tenerse en cuenta al asignar memoria a tu VPS, ya que esos 100 MB iniciales son en gran medida inutilizables para los procesos del sitio.
Ver el uso de memoria en el panel
Para ver el gráfico de uso de memoria de tu VPS, abre la página Servidores y da clic en el botón Administrar a la derecha de tu servidor. Este gráfico se actualiza diariamente para mostrar un promedio del uso del día, por lo que te ayuda a ver las tendencias de uso.
Auto-Boost
DreamHost ofrece un servicio llamado Auto-Boost que protege temporalmente tu servidor durante picos de memoria para garantizar que el sitio web siga funcionando sin problemas. El gráfico muestra todas las instancias en las que se activó Auto-Boost.
Los comandos top, free, y ps aux
Los siguientes comandos se deben ejecutar periódicamente para obtener más información que te ayude a diagnosticar el problema en particular que está observando. Para ejecutar los siguientes comandos, debes:
- Iniciar sesión en tu servidor a través de SSH.
- En tu aplicación de terminal, abre dos conexiones en pestañas separadas para revisar fácilmente los resultados.
El comando 'top'
El comando top muestra los procesos activos actualmente, el porcentaje de CPU que están usando, cuánta memoria y qué usuario lo está ejecutando. En tu terminal, escribe top. Luego presiona la tecla Enter.
[server]$ top
-
Filtrar por memoria
Una vez top esté corriendo, presiona Shift + m para filtrar los procesos por uso de memoria.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14871 exampleu 20 0 250m 14m 8340 S 5 1.3 0:04.12 php83.cgi 23591 exampleu 20 0 250m 12m 8256 S 6 1.3 0:00.36 php83.cgi 23652 exampleu 20 0 250m 13m 8256 S 6 1.3 0:00.18 php83.cgi 23654 exampleu 20 0 250m 15m 8252 S 6 1.3 0:00.17 php83.cgi
La asignación de memoria que configure en tu panel se relaciona con la memoria física que se utiliza (en contraposición a la memoria virtual). Esto corresponde a la columna RES en la salida. En esta columna, puede ver cuánta memoria está utilizando cada proceso. En este caso, todos utilizan entre 12 y 15 MB de memoria.
Los valores que ves pueden estar en kilobytes. Para cambiar a MB, solo presiona la letra e. Mantén presionada la tecla para alternar entre las diferentes unidades de memoria.
Ten en cuenta que los procesos Apache y PHP se multiplican a medida que tu sitio recibe una gran cantidad de tráfico y comienza a atender más solicitudes. Como resultado, el uso de memoria podría crecer exponencialmente durante estos períodos.
El comando 'free'
En otra terminal, corre free -m para mostrar el uso actual de memoria en megabytes.
[server]$ free -m total used free shared buff/cache available Mem: 1000 233 114 21 652 766 Swap: 0 0 0
- total: En el ejemplo anterior, la memoria total disponible es de aproximadamente 1GB. Puedes ver este valor como 1000MB en la columna total.
- used: Debajo de la columna used en la primera fila, muestra 233 MB. Esto significa que se utilizan 2,1 GB.
- available: Debajo de la columna available, en la segunda fila muestra 766MB disponibles. Este es el total de la memoria disponible para empezar nuevas aplicaciones o procesos.
-
El total que ve debe corresponder a la cantidad de memoria que asignó a su VPS en tu panel.
Visita linuxatemyram.com para obtener más detalles sobre el uso de la memoria.
El comando ps aux
El comando ps te proporciona información similar a top, pero simplemente toma una captura de los procesos activos y su uso. Esto es útil si solo deseas ver un proceso en particular.
-
Procesos de Apache
Si solo deseas ver la ejecución de procesos de Apache, corre el siguiente comando:
[server]$ ps aux | grep apache
Eso "canalizará" (o pasará) la respuesta de ps aux al comando grep, el cual filtrará esa respuesta buscando el string apache en ella. Se muestra cualquier línea con esa respuesta.
Procesos de PHP
Corre el siguiente comando para mostrar los procesos de PHP que están corriendo actualmente:
[server]$ ps aux | grep php
Recuperarse de una saturación de memoria
La saturación de memoria es cuando tu VPS está usando toda su asignación de memoria.Cuando esto sucede, una variedad de cosas comenzarán a suceder.
- Es probable que tus sitios dejen de responder en muchos casos
- Otros procesos esenciales en tu VPS también dejarán de responder, como el servidor SSH, el servidor FTP, el servidor de streaming de medios, etc.
- Tu VPS puede entrar en un estado en el que ni siquiera puede iniciar sesión debido a la saturación de la memoria.
Buscar la causa
Usualmente puedes ver si esto está ocurriendo revisando un par de cosas:
Revisar del gráfico de recursos en el panel
-
Si el gráfico de uso de recursos muestra que tu memoria aumenta muy por encima de la memoria asignada, entonces es probable que esto sea lo que esté sucediendo.
Correr el comando 'free'
-
Si aún puedes iniciar sesión en tu VPS a través de SSH, intenta correr el comando free -m para ver cuánta memoria tienes disponible. Cuanto más se acerca a cero, peor estás. En cero, has alcanzado la saturación total de la memoria y lo que sucede a continuación puede ser impredecible.
Solucionar el problema
Los pasos en este artículo explican cómo ubicar la fuente del problema de memoria. A partir de ahí, tendrás que continuar solucionando lo que ha encontrado para determinar la causa original.
Por ejemplo, si los procesos PHP están causando problemas de memoria y tu sitio web está basado en WordPress, puedes comenzar a solucionar los temas comunes de WordPress.
Sin embargo, si tu sitio web se basa en el código personalizado, la respuesta de los comandos anteriores podría apuntar el script específico que causa los problemas de memoria.