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.
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.
Cómo añadir un segundo disco para backup en Proxmox
Emanuel
Recuperar la contraseña de acceso a la Extranet de Cliente
Luis.Artola
Timestamp en Linux Bash
Hola
Crear una lista de correo en cPanel
Jair Mtz
Crear una lista de correo en cPanel
Jair Mtz
Cambiar en Linux la fecha y la hora de un fichero
Eduardo
Activar el arranque automático de las máquinas virtuales de Proxmox
Yuleidi Blanco