Administrar el uso de la memoria de tu VPS

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..

Para correr los comandos en ester artículo, debes tener un usuario Shell configurado en tu panel y un conocimiento general de UNIX Shell. Revisa los siguientes artículos para más información:

Bases del uso de memoria

Todos los VPS (VPS) de DreamHost utilizan aproximadamente 100 MB de memoria como base sin que se ejecuten procesos de usuario. Esto se debe a que muchos procesos del sistema que deben ejecutarse para que tu VPS funcione (sshd, proftpd, etc.). Debes recordar esto 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.

Ejemplo de cómo los procesos de PHP utilizan la memoria

Cuando se visita tu sitio web, el archivo PHP de la página visitada se analiza y ejecuta mediante un proceso PHP. Al mismo tiempo, un proceso de Apache corre para entregar la respuesta 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. Apache y PHP continuarán generando procesos según lo solicitado hasta que tu VPS esté completamente sin memoria.

Esto a menudo lleva a problemas en los que los sitios web en un VPS dejarán de trabajar debido a la saturación de la memoria durante las horas pico y comenzarán a trabajar normalmente nuevamente una vez que el tráfico baje a niveles más manejables.

Por esta razón, debes tener cuidado de cómo configuras las cosas para prevenir estos inconvenientes.

Revisar el uso de memoria en el panel

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

Abre la página VPS y haz clic en la gráfica RAM debajo de la columna Uso:

ES VPS memory graph

Esta gráfica se actualiza normalmente una vez diariamente, alrededor de la media noche de PDT/PST para mostrar un promedio del uso del día.

Dado que se actualiza una vez al día, te ayuda a ver las tendencias de uso. Sin embargo, no es útil para obtener una buena imagen de lo que está sucediendo en tiempo real. Los comandos a continuación te ayudan a ver la información en tiempo real:

Los comandos top, free y ps aux

Para correr los siguientes comandos, debes iniciar sesión en tu servidor a través de SSH. En tu aplicativo de terminal, abre dos conexiones en pestañas separadas para revisar los resultados más fácilmente. Luego puedes correr los siguientes comandos para solucionar los problemas de memoria:

  • top
  • free -m
  • ps aux

El comando 'top'

En tu terminal, escribe top. Luego presiona la tecla Enter.

[server]$ top

El comando top muestras las sesiones actuales activas, el porcentaje de la CPU que están usando, cuánta memoria, cual usuario la está corriendo, y demás.

Filtrar por memoria

Una vez el comando top esté corriendo, puedes presionar la tecla Shift + m para filtrar los procesos por uso de memoria más que por el uso de CPU.

Mientras examinas el resultado de top, es importante saber qué información debes observar. La asignación de memoria que establece en tu panel se relaciona con la memoria física que se usa (a diferencia de la memoria virtual). Esto corresponde a la columna RES en la respuesta.

Debajo es lo que top filtró por memoria (Shift + m) puede verse (el proceso real será diferente en tu VPS):

Los valores pueden verse en kilobytes. Para cambiar a MB, solo presiona la letra e. Sigue presionándola para cambiar entre las diferentes unidades 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  php82.cgi
23591 exampleu  20   0   250m  12m  8256  S   6     1.3   0:00.36  php82.cgi
23618 exampleu  20   0   250m  13m  8256  S   4     1.3   0:00.19  php82.cgi
23684 exampleu  20   0   250m  12m  8256  S   7     1.3   0:00.10  php82.cgi
23652 exampleu  20   0   250m  13m  8256  S   6     1.3   0:00.18  php82.cgi
23654 exampleu  20   0   250m  15m  8252  S   6     1.3   0:00.17  php82.cgi

En el ejemplo anterior, verás una serie de procesos php82.cgi en ejecución, lo que significa que el sitio que genera estos procesos se ejecuta bajo PHP 8.2. En la columna RES, puedes ver cuánta memoria está usando cada uno. En este caso, todos usan de 12-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.

El comando 'free'

En otra ventana, corre free -m para mostrar el uso actual de memoria en megabytes.

[server]$ free -m

La respuesta se vería más o menos así:

              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 el siguiente enlace para ver más detalles sobre el uso de memoria:

El comando ps aux

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(sos) en particular.

Procesos de Apache

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 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.

Ver la causa

Usualmente puedes ver si esto está ocurriendo revisando un par de cosas:

Revisar el gráfico de recursos en el panel

Si el gráfico de uso de recursos muestra que tu memoria se dispara muy por encima de la memoria asignada, es probable que esto sea lo que este 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.

Los comandos anteriores deben ejecutarse regularmente para obtener más información para ayudarte a diagnosticar el problema en particular que estás viendo.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?