¿Qué ha causado que mi servidor se reinicie por load alto?

Si tienes contratado un servidor VPS con nosotros ya sabrás que incluye multitud de tecnología añadida. Una de ellas es el reinicio automático por load alto. Lo que hace este sistema es proteger tu servidor y reiniciarlo de forma controlada cuando alcanza un nivel de carga tan alto que está inoperativo. Cuando pasa esto el servidor se reinicia para poder seguir dando servicio.

Al hacerse este reinicio te enviamos un correo electrónico con una captura del comando "top" de linux en ese momento. Este comando muestra, entre otras cosas, los procesos en ejecución y la cantidad de CPU y memoria RAM que estaban consumiendo.

Reinicio por load alto

Un vistazo a esta información puede resultar muy útil para determinar una primera causa o empezar a investigar en una dirección. Vamos a verlo analizando un ejemplo.

Suponemos que nos llega un correo de reinicio por load alto con este contenido:

top - 21:42:02 up 29 days, 11:17,  0 users,  load average: 43.40, 18.36, 9.08
Tasks: 157 total,  37 running, 119 sleeping,   0 stopped,   1 zombie
%Cpu(s): 86.8 us,  5.3 sy,  0.0 ni,  7.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32505856 total, 20704652 free,  3843852 used,  7957352 buff/cache
KiB Swap:  1048576 total,  1036736 free,    11840 used. 28575852 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  289 mysql     20   0 4572988 811968   7196 S 147.4  2.5   1799:33 /usr/sbin/+
 1321 cuenta1  20   0  401396  65076   9920 R  36.8  0.2   0:12.53 /opt/cpane+
 1289 cuenta1  20   0  417080  80832  10004 R  31.6  0.2   0:15.84 /opt/cpane+
 1299 cuenta1  20   0  417080  80820  10004 R  26.3  0.2   0:15.62 /opt/cpane+
 1286 cuenta1  20   0  417544  81312  10004 R  21.1  0.3   0:16.08 /opt/cpane+
 1345 cuenta1  20   0  401080  64668   9908 R  21.1  0.2   0:08.35 /opt/cpane+
 1430 otracuenta  20   0  253108  20108   9344 R  21.1  0.1   0:00.04 /opt/cpane+
 1248 cuenta1  20   0  418616  82268  10004 R  15.8  0.3   0:17.89 /opt/cpane+
 1285 cuenta1  20   0  418616  82252  10004 R  15.8  0.3   0:16.48 /opt/cpane+
 1291 cuenta1  20   0  417848  81560  10008 R  15.8  0.3   0:16.17 /opt/cpane+
 1295 cuenta1  20   0  417080  80820  10004 R  15.8  0.2   0:15.60 /opt/cpane+
 1325 cuenta1  20   0  404212  67756   9920 R  15.8  0.2   0:11.84 /opt/cpane+
 1329 cuenta1  20   0  401140  64816   9916 R  15.8  0.2   0:11.12 /opt/cpane+
 1333 cuenta1  20   0  400372  63976   9916 R  15.8  0.2   0:09.36 /opt/cpane+
 1338 cuenta1  20   0  397784  61248   9916 R  15.8  0.2   0:08.98 /opt/cpane+
 1341 cuenta1  20   0  400884  64460   9908 R  15.8  0.2   0:09.00 /opt/cpane+
 1350 cuenta1  20   0  396760  60308   9916 R  15.8  0.2   0:07.65 /opt/cpane+
 1352 cuenta1  20   0  396504  60108   9916 R  15.8  0.2   0:07.35 /opt/cpane+
 1363 cuenta1  20   0  397752  61180   9908 R  15.8  0.2   0:06.40 /opt/cpane+
 1378 cuenta1  20   0  389556  52900   9824 R  15.8  0.2   0:02.49 /opt/cpane+
 1382 cuenta1  20   0  407140  70920   9968 R  15.8  0.2   0:00.84 /opt/cpane+
 1255 cuenta1  20   0  418616  82324  10004 R  10.5  0.3   0:17.63 /opt/cpane+
 1288 cuenta1  20   0  417848  81552  10004 R  10.5  0.3   0:15.94 /opt/cpane+
 1304 cuenta1  20   0  408076  71720   9928 R  10.5  0.2   0:14.72 /opt/cpane+
 1307 cuenta1  20   0  408072  71712   9928 R  10.5  0.2   0:14.22 /opt/cpane+
 1332 cuenta1  20   0  401140  64760   9916 R  10.5  0.2   0:10.38 /opt/cpane+
 1337 cuenta1  20   0  398836  62372   9916 R  10.5  0.2   0:09.40 /opt/cpane+
 1355 cuenta1  20   0  394712  58088   9916 R  10.5  0.2   0:06.92 /opt/cpane+
 1368 cuenta1  20   0  392652  55972   9892 R  10.5  0.2   0:06.24 /opt/cpane+
 1372 cuenta1  20   0  390840  54172   9884 R  10.5  0.2   0:05.00 /opt/cpane+
 1374 cuenta1  20   0  390840  54068   9824 R  10.5  0.2   0:04.04 /opt/cpane+
 1375 cuenta1  20   0  389556  52900   9824 R  10.5  0.2   0:03.09 /opt/cpane+
 1380 cuenta1  20   0  388020  51232   9804 R  10.5  0.2   0:00.96 /opt/cpane+
 1415 cuenta1  20   0  381112  44212   9796 R  10.5  0.1   0:00.33 /opt/cpane+
 1284 cuenta1  20   0  417080  80832  10004 R   5.3  0.2   0:16.46 /opt/cpane+
    1 root      20   0  195096   3436   2192 S   0.0  0.0   8:29.87 init -z   +
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [kthreadd/+
    3 root      20   0       0      0      0 S   0.0  0.0   0:01.55 [khelper/3+
   77 root      20   0  223852  91176  91024 S   0.0  0.3   1:23.20 /usr/lib/s+
   78 root      20   0   42924    952    948 S   0.0  0.0   0:00.00 /usr/lib/s+

Lo primero que vemos en la parte superior es que la carga del servidor era muy alta, de 43.40 puntos.

top - 21:42:02 up 29 days, 11:17,  0 users,  load average: 43.40, 18.36, 9.08

De forma simplificada podemos pensar en el load máximo de nuestro servidor como el número de cores que tiene. Por ejemplo si el servidor tiene 4 cores, con un load superior a 4 el servidor ya está empezando a retrasarse en servir las peticiones entrantes y a poner procesos en cola.

Si vemos los procesos en ejecución, el primero que se nos muestra es el mysql que está consumiendo un 147.4% de la CPU.

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   289 mysql     20   0 4572988 811968   7196 S 147.4  2.5   1799:33 /usr/sbin/+

Por tanto se estaban realizando multitud de consultas MySQL, pero ¿de dónde venían esas consultas? La respuesta la tenemos mirando el resto de procesos. Vemos que la mayoría son procesos del usuario "cuenta1".

1321 cuenta1  20   0  401396  65076   9920 R  36.8  0.2   0:12.53 /opt/cpane+
 1289 cuenta1  20   0  417080  80832  10004 R  31.6  0.2   0:15.84 /opt/cpane+
 1299 cuenta1  20   0  417080  80820  10004 R  26.3  0.2   0:15.62 /opt/cpane+
 1286 cuenta1  20   0  417544  81312  10004 R  21.1  0.3   0:16.08 /opt/cpane+
 1345 cuenta1  20   0  401080  64668   9908 R  21.1  0.2   0:08.35 /opt/cpane+
 1430 otracuenta  20   0  253108  20108   9344 R  21.1  0.1   0:00.04 /opt/cpane+
 1248 cuenta1  20   0  418616  82268  10004 R  15.8  0.3   0:17.89 /opt/cpane+
 1285 cuenta1  20   0  418616  82252  10004 R  15.8  0.3   0:16.48 /opt/cpane+
 1291 cuenta1  20   0  417848  81560  10008 R  15.8  0.3   0:16.17 /opt/cpane+
 1295 cuenta1  20   0  417080  80820  10004 R  15.8  0.2   0:15.60 /opt/cpane+

Este nombre de usuario corresponde con una cuenta que tenemos configurada en cPanel, por lo que esos procesos son visitas a la página web asociada a esa cuenta.

Por tanto, en este ejemplo, tenemos bastantes pistas por las que empezar a investigar:

  • Hay multitud de visitas a la web de la cuenta "cuenta1"
  • Estas visitas están causando que la web esté realizando muchas consultas MySQL, subiendo excesivamente la carga

Lo que habría que hacer es comprobar si esas visitas son legítimas o de robots y actuar en consecuencia. Además de eso, también es recomendable repasar la optimización de las consultas MySQL de esa web, así como comprobar el uso correcto de índices. En esta entrada de nuestro blog puedes ver cómo detectar consultas MySQL lentas:

Mientras estás buscando las causas y poniendo solución, para evitar que el dominio causante esté afectando a todo el servidor, puedes suspender la cuenta momentáneamente. En estas entradas de nuestro blog puedes consultar cómo hacerlo en cPanel o Plesk:

En esta entrada hemos visto un ejemplo de cómo abordar un problema de alta carga en un servidor con una casuística muy común. Sin embargo, es posible que en otras situaciones tengas que investigar más concienzudamente los logs internos del servidor o monitorizarlo de forma más continua hasta que empiece a subir la carga y puedas ver qué es lo que está causando esa subida.

Te recordamos que puedes utilizar nuestro Soporte Premium para ayudarte a encontrar las causas y ponerle solución.

Esperamos que esta entrada te sea de utilidad.

No hay comentarios

Agregar comentario