Administrar el uso de la memoria de tu VPS

Generalidades

Todos los servidores privados virtuales (VPS) de DreamHost utilizan aproximadamente 100 MB de memoria como base sin que se ejecuten procesos de usuario. Esto se debe a que hay varios procesos del sistema que deben ejecutarse para que tu VPS funcione (sshd, proftpd, etc.). Es importante que tengas esto en cuenta al asignar memoria para tu VPS, ya que esos 100 MB iniciales de memoria son en gran parte inutilizables para los procesos de tu sitio.

Después de esos 100 MB iniciales, la mayor parte de la memoria que utiliza tu VPS consiste en procesos Apache y PHP (o en el caso de aplicaciones Rails, procesos Passenger y Rails).

Ejemplo de cómo los procesos utilizan la memoria

Cada vez que alguien ve tu sitio web, el archivo PHP de la página que ve se analiza y ejecuta mediante un proceso PHP CGI. Al mismo tiempo, será necesario ejecutar un proceso de Apache para entregar la salida HTML resultante del script al navegador.

La cantidad de estos procesos que se ejecutan es proporcional a la cantidad de tráfico que tiene. Por ejemplo, si tienes una gran afluencia de tráfico, se generarán procesos PHP y Apache adicionales para facilitar ese tráfico. De hecho, Apache y PHP continuarán generando procesos según lo solicitado hasta que tu VPS esté completamente sin memoria.

Deberás tener cuidado con la forma en que configuras las cosas para evitar tales problemas. Esto a menudo conduce a problemas en los que los sitios web en un VPS dejarán de funcionar debido a la saturación de la memoria durante las horas pico y luego comenzarán a funcionar normalmente nuevamente una vez que el tráfico disminuya a niveles más manejables.

Verificar tu uso de memoria

Puedes ver un gráfico del uso de memoria de tu servidor privado en tu panel.

  1. Ve a la página VPS.
  2. A la derecha de tu VPS, haz clic en el icono de gráfico de RAM debajo de la columna Uso.
    es-panel-vps-memory-usage-graph.png

El gráfico de uso de memoria en tu panel web es útil para ver las tendencias de uso, pero no es realmente útil para obtener una buena imagen de lo que realmente está sucediendo en tiempo real, ya que estos gráficos generalmente se actualizan una vez al día alrededor de la medianoche PDT/PST y son un promedio del uso del día.

Los comandos top, free y ps aux

Para obtener más información sobre lo que está sucediendo exactamente, necesitarás entrar por SSH a tu VPS.

Abre dos conexiones en ventanas separadas para que pueda revisar fácilmente los resultados.

Una vez que estés dentro, las herramientas principales que utilizará son top -c, free -m, y ps aux.

Usar el comando top

El comando top muestra los procesos activos actuales, el porcentaje de CPU que están usando, cuánta memoria, qué usuario la está ejecutando, etc. Una vez que top esté corriendo, puedes presionar Shift + m para ordenar los procesos por uso de memoria en lugar de por uso de CPU.

Mientras examinas tu salida principal, es importante saber qué información necesitas mirar. La asignación de memoria que configuraste en tu panel se relaciona con la memoria física que se está utilizando (a diferencia de la memoria virtual). Esa memoria corresponde a la columna RES en el comando top. Abajo de top ordernado por la memoria (Shift + m) podría verse así (los procesos reales probablemente serán diferentes en tu VPS):

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  php74.cgi
23591 exampleu  20   0  250m  12m 8256  S  6     1.3   0:00.36  php74.cgi
23618 exampleu  20   0  250m  13m 8256  S  4     1.3   0:00.19  php74.cgi
23684 exampleu  20   0  250m  12m 8256  S  7     1.3   0:00.10  php74.cgi
23652 exampleu  20   0  250m  13m 8256  S  6     1.3   0:00.18  php74.cgi
23654 exampleu  20   0  250m  15m 8252  S  6     1.3   0:00.17  php74.cgi

En el ejemplo anterior, verás una serie de procesos php74.cgi en ejecución, lo que significa que el sitio que genera estos procesos se ejecuta bajo PHP 7.4. En la columna RES, puedes ver cuánta memoria está usando cada uno. En este caso, todos utilizan entre 12 y 15 MB de memoria. En un VPS ocupado, es probable que tenga varios procesos de Apache en ejecución. Esos promedian alrededor de 9-11 MB de memoria cada uno. Los procesos de Apache y PHP se multiplican a medida que tus sitios comienzan a atender más solicitudes, por lo que puede ver que el uso de memoria puede dispararse fácilmente si comienzas a recibir mucho tráfico.

Usar el comando libre

En tu otra ventana, puedes correr free -m. Este comando muestra el uso de memoria actual en tu VPS y debería verse así:

                    total        used        free     shared    buffers     cached
 Mem:               4049        3941        107            0        123       1639
 -/+ buffers/cache:             2178       1870
 Swap:              6165          42       6122

La opción -m le dice al comando que muestre el uso de memoria en megabytes.

total — en el ejemplo anterior, la memoria total disponible es de aproximadamente 4 GB. Puedes ver este valor como 4049 MB en la columna total.

used — Debajo de la columna used en la segunda fila, muestra 2178 MB. Esto significa que se utilizan 2,1 GB.

free — Debajo de la columna free en la segunda fila muestra 1870 MB. Esto significa que 1.8GB es gratis.

El total que ve debe corresponder a la cantidad de memoria que asignó a su VPS en tu panel.

Para obtener más detalles sobre cómo se ve el uso de la memoria, visita lo siguiente:

Usar el comando ps aux

ps te proporciona información similar a top, pero simplemente toma una captura de los procesos activos y tu uso y la muestra en tu pantalla. Esto es útil si solo deseas ver un proceso en particular. Por ejemplo, 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 salida de ps al comando grep Eso "canalizará" (o pasará) la salida de ps al comando apache en ella. Se muestra cualquier línea con esa salida.

Otra variación útil es:

[server]$ ps aux | grep php

Esto te permite observar todos los procesos PHP que se están ejecutando.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?