Cómo y por qué Monitorear el Uso de la CPU del Servidor
Cuando estoy usando cualquier aplicación, quiero que sea rápida. Las aplicaciones rápidas me hacen feliz. Y estoy seguro de que es lo mismo con todos. Si posee alguna aplicación que funcione con Internet, es esencial centrarse en el rendimiento del servidor. Hay muchas cosas de las que ocuparse para tener un servidor de buen rendimiento. Pero para mejorar algo, necesitas saber dónde está en primer lugar. Por lo tanto, monitorear su servidor es el primer paso para aumentar el rendimiento de su servidor.
Cuando se habla de qué monitorear para comprender el rendimiento de un servidor, pueden surgir muchas métricas. Nos centraremos en uno solo en esta publicación: el uso de la CPU del servidor. Comenzaremos explicando qué es el uso de la CPU del servidor, y luego discutiremos por qué y cómo monitorearlo.
¿Qué Significa El Uso De CPU Del Servidor?
Todo lo que sucede en el servidor es una tarea para el sistema. Esta tarea se desglosa en los procesos que ejecuta el servidor. Los procesos pueden ser de diferentes complejidades y difieren en la rapidez con que se pueden completar. Y en base a esto, la CPU tarda algún tiempo en ejecutar el proceso. En otras palabras, la CPU se está utilizando para ejecutar el proceso. El uso de CPU es el porcentaje de tiempo que la CPU está siendo utilizada para completar sus tareas.
Cuando el sistema está en funcionamiento, una CPU puede estar en tres estados: inactivo, ocupado o esperando E/S.
Inactivo
Cuando la CPU está en estado inactivo, la CPU no hace nada. Está esperando a que se le asigne una tarea. Es muy poco probable que vea una CPU en estado inactivo si tiene un solo sistema de procesador. Incluso si no está ejecutando ninguna aplicación o haciendo nada, la CPU se usaría para ejecutar tareas del sistema operativo. Pero si su sistema tiene varios procesadores, podría ver uno o algunos de ellos inactivos. Esto podría deberse a que solo se utilizan uno o pocos procesadores y los demás no tienen nada que hacer.
Ocupado
Lo contrario del estado de inactividad es el estado ocupado, que es cuando la CPU se utiliza para ejecutar un proceso. Una CPU es responsable de diferentes tipos de tareas. Durante el proceso de ejecución de tareas, una CPU hace cuatro cosas:
- Buscar: Las instrucciones para completar la tarea se almacenan en la memoria. La CPU tiene que obtener estas instrucciones de la memoria para entender qué hacer.Decodificación
- : Las instrucciones para la CPU pueden estar en diferentes formatos, como un programa. Por ejemplo, supongamos que escribiste un programa en C, Java o Python. Las CPU no pueden entender directamente estos lenguajes de codificación. Tiene que decodificarlo en una forma que pueda entender.
- Ejecutar: Esto es cuando la CPU realmente está haciendo la tarea.Almacenamiento
- : Una vez que la CPU completa la tarea, tiene que dar retroalimentación sobre la tarea. Los resultados después de la ejecución de la tarea se almacenan en la memoria.
Operaciones de E/S
Este es el estado en el que la CPU no está completamente inactiva, pero tampoco está ocupada. Durante la ejecución de un proceso, una CPU puede tener que enviar algunos datos a otro componente o proceso. O la CPU puede tener que esperar para obtener datos de otro proceso o componente. En ese caso, está esperando a que se complete la operación de E / S para poder reanudar la ejecución de su tarea.
El uso de CPU es la medida de la CPU cuando está en un estado no inactivo. Aunque el uso de CPU se mide en porcentaje, puede ver que los valores de uso de CPU son superiores al 100%. Esto no significa que la CPU esté sobrecargada. Por ejemplo, verá un uso de CPU superior al 100% en sistemas multiprocesador. El valor del uso de CPU para un sistema es la suma del porcentaje de uso de CPU de CPU individuales. Por lo tanto, si tiene dos procesadores y uno de ellos tiene un uso de CPU del 60% y el otro tiene un uso de CPU del 50%, el valor total de uso de CPU sería del 110%.
¿Qué Causa Un Alto Uso de CPU?
Encontrar el núcleo del problema le ayuda a implementar mejores soluciones para un alto uso de CPU. Puede haber varias razones para el uso de la CPU en función de los casos de uso. Estoy enumerando las causas más comunes.
Procesos Con alto requerimiento De CPU
Algunos programas requieren altos recursos de CPU. Si tiene un sistema de especificaciones bajas y está tratando de ejecutar un videojuego de alta gama, obviamente, el uso de la CPU se disparará. Del mismo modo, puede haber diferentes procesos que requieren altos recursos de CPU para funcionar. Estos procesos o una serie de procesos que, como subtotal, utilizan una CPU alta pueden ser una de las causas. En servidores, ejecutando múltiples servicios para mantener el servidor en funcionamiento, simulaciones, etc., puede causar un alto uso de CPU.
Procesos en segundo plano
Los procesos se pueden dividir principalmente en 2 categorías: procesos del sistema y procesos de aplicación. Los procesos del sistema son los procesos que se necesitan para mantener su sistema en funcionamiento. Los procesos de aplicación son los procesos que utilizarías para un propósito específico. Cuando estos procesos se siguen ejecutando en segundo plano, consumen recursos de CPU.
Muchos procesos de aplicación se siguen ejecutando en segundo plano incluso después de cerrar la ventana de la aplicación. Esto es menos probable que suceda en un servidor porque un servidor generalmente se mantiene y limpia periódicamente para tener solo los procesos que necesita, pero aún es posible.
Malware
El malware (Software malicioso) son programas utilizados por actores maliciosos para atacar su sistema o realizar acciones ilegítimas en su sistema. Inicialmente, el malware no utiliza grandes recursos de CPU para permanecer oculto, pero cuando comienzan a realizar acciones maliciosas, causan un alto uso de CPU. Fui testigo de este incidente en el que se había inducido malware en un servidor una semana antes y un día comenzó a transferir todos los datos confidenciales del servidor al almacenamiento en la nube. Por lo tanto, este malware no usó muchos recursos de CPU mientras estaba configurando cosas y encontrando datos críticos. Pero una vez que encontró todo lo que necesitaba, hubo un gran aumento en el uso de la CPU debido a la transferencia de datos.
Código no optimizado
Es común tener código personalizado que se ejecuta en servidores para tareas específicas. Si estos códigos no están optimizados, podrían terminar utilizando una gran cantidad de recursos de CPU. Los bucles no optimizados y la recursividad son algunas de las causas más comunes de un alto uso de CPU debido al código no optimizado.
Correcciones comunes Para un uso elevado de CPU
En función de las causas comunes abordadas anteriormente, veamos algunas de las correcciones comunes para un uso elevado de CPU.
Reiniciar
Un reinicio del sistema es una solución para la mayoría de los problemas del equipo. ¿Cómo ayudaría eso a reducir el uso de CPU? Un reinicio cerraría todos los procesos en segundo plano que podrían haberse iniciado debido a alguna acción, pero ya no la necesita. También terminaría los procesos zombis u otros procesos que se ejecutan indefinidamente debido a un mal funcionamiento. Por lo tanto, reiniciar el sistema limpiaría todos (al menos la mayoría) de los procesos innecesarios y reduciría el uso de la CPU.
Finalizar procesos en segundo plano
Reiniciar el sistema puede no ser factible, especialmente para servidores. Por lo tanto, tendrá que manejar procesos innecesarios sin reiniciar el sistema. Para hacer esto, puede enumerar todos los procesos en ejecución, identificar qué procesos son innecesarios y finalizarlos. Así es como se vería en el administrador de tareas de Windows:
Otra solución es lidiar con los procesos de inicio. Hay algunos procesos que están configurados para comenzar tan pronto como se inicie el sistema. Algunas de ellas son necesarias y otras no. Puede identificar dichos procesos y desactivarlos para que no se inicien automáticamente. En Windows, puede encontrarlos en la pestaña «Inicio» en el administrador de tareas:
Antimalware
El malware es peligroso. No solo en términos de uso de CPU, sino también en general. Algunos malware causan un alto uso de CPU y el uso de antimalware podría ser su mejor defensa contra dicho malware. El software antimalware moderno es inteligente y avanzado. No solo pueden identificar malware en su sistema y eliminarlo o ponerlo en cuarentena, sino que también pueden evitar que el malware entre en su sistema. Por lo tanto, al usar antimalware, no solo corregirá el alto uso de CPU, sino que también evitará el alto uso de CPU debido al malware.
Optimización de código
Si identifica que la razón del alto uso de CPU se debe al código no optimizado, debe optimizarlo. Tendrá que analizar el código y averiguar qué parte del código consume recursos de CPU y optimizarlo.
Actualización de CPU
Si ha solucionado todos los demás problemas y optimizado todo y aún ve un alto uso de CPU, significa que su requerimiento de CPU es alto. En tales casos, no hay otra opción que actualizar los recursos de la CPU.
¿Por Qué Debe Supervisar El Uso De La CPU Del Servidor?
Un servidor puede tener dos tipos de trabajos para completar en un nivel alto: un trabajo del usuario y un trabajo dentro del sistema. Un trabajo del usuario es cuando un usuario ha solicitado un servicio o datos del servidor. Digamos que vas a YouTube y buscas algo. El servidor de YouTube tiene que buscar todos los videos relevantes para su búsqueda y enviarlos como respuesta a su solicitud. Esta transacción de datos utiliza el tiempo de CPU.
Un servidor tiene tareas que no son solo responder a los usuarios. No hace falta decir que su CPU se utiliza para ejecutar el sistema operativo y los servicios web. Pero aparte de esto, los servidores se pueden usar para ejecutar algunos scripts para procesar datos. Un ejemplo común es ejecutar libros de jugadas Ansible. Estos libros de jugadas pueden ejecutar tareas incluso sin que el usuario tenga que intervenir.
Administrar recursos y tareas
Si el uso de la CPU es bajo, entonces está desperdiciando sus recursos. Y si el uso de la CPU es muy alto, el sistema se ralentiza y puede comenzar a retrasarse. No desea que ninguno de estos suceda, por lo que es importante monitorear el uso de la CPU del servidor. Supervisar el uso de la CPU del servidor le ayuda a comprender cuánto se está utilizando su CPU. Esto le ayudará a decidir si puede hacer que su CPU haga más trabajos o aumentar sus recursos para satisfacer la necesidad.
Optimizar programas
Supervisar el uso de la CPU del servidor ha sido muy ventajoso para administrar recursos y optimizar tareas. Ha habido casos en los que los programas toman más tiempo del que idealmente deberían tomar. Cuando ve que el uso de CPU es mayor incluso mientras ejecuta un programa corto y simple, sabe que hay algo mal con su programa. A menudo, los programas no son eficientes debido a una mala práctica de programación. El monitoreo del uso de la CPU podría ayudarlo a encontrar tales instancias y optimizar el código. Por lo tanto, monitorear el uso de la CPU es como golpear a dos pájaros de un solo tiro.
Ahora que hemos terminado con el » qué «y el» por qué «del uso de la CPU y hemos aprendido lo beneficioso que puede ser el uso de la CPU del servidor de monitoreo, pasemos a la parte del» cómo».
Cómo monitorear el uso de CPU del servidor
El uso de CPU no es algo así como dinero que puede ahorrar durante un período de tiempo y luego usarlo cuando lo desee. La CPU no utilizada es un recurso desperdiciado. Es por eso que todo el mundo quiere que el uso de la CPU del servidor sea cercano al 100%. Y para mantenerlo en su mejor momento, es posible que tenga que hacer algunos ajustes y seguir actualizando el sistema. Para saber qué hacer, debe conocer el estado actual del uso de la CPU del servidor.
Puede comprobar el uso de la CPU de su servidor con un solo comando. Si tiene un sistema operativo Windows, abra el símbolo del sistema y ejecute este comando:
wmic cpu get loadpercentage
Debería ver el porcentaje de uso de CPU como se muestra en esta captura de pantalla:
En función de sus necesidades, puede consultar el uso de la CPU periódicamente y almacenar los datos en algún lugar, y luego mirarlos más tarde. O puede transmitir el uso de la CPU a un panel para monitorear en cualquier momento.
La mayoría de los sistemas operativos vienen con herramientas y utilidades incorporadas para monitorear el uso de la CPU. Pero estas herramientas tienen limitaciones y, por lo general, son demasiado básicas. En la era actual, necesitamos capacidades avanzadas para manejar y trabajar en los datos de monitoreo, y eso requiere herramientas de monitoreo avanzadas. Casi todos los servicios están en línea ahora. Y los servidores juegan un papel importante en hacer que estos servicios estén disponibles. No puede permitirse esperar un par de horas para saber que su servidor está inactivo debido al alto uso de la CPU. Debe supervisar continuamente el uso de la CPU y otras métricas del servidor.
Monitorear continuamente
Comprobar el uso de la CPU del servidor en un momento dado no es de mucha utilidad. Necesita una solución para supervisar el uso de la CPU del servidor de forma continua. Casi todos los sistemas operativos de servidor vienen con un monitor de rendimiento donde puede ver el uso de la CPU en un momento dado. Al monitorear el uso de la CPU del servidor, debe buscar picos, ya que los cambios repentinos en el uso de la CPU indican que ha ocurrido algo fuera de lo común.
Además de monitorear el uso de la CPU en tiempo real, desea almacenar estos datos para que pueda visualizarlos y analizarlos a diferentes intervalos. Para aprovechar al máximo las estadísticas de uso de CPU, debe recopilar datos de uso de CPU a intervalos regulares (preferiblemente en tiempo real) generando registros, y debe visualizarlos en forma de gráficos. Acabamos de hablar de una métrica, pero no olvide que el uso de la CPU del servidor no es lo único que debe monitorear. Para obtener todo lo que necesita en un solo lugar, use Scalyr.