Recientemente, mi CPU del servidor ha estado subiendo mucho.
Promedio de carga de la CPU 13.91 (1 min) 11.72 (5 min) 8.01 (15 min) y mi sitio solo ha tenido un ligero aumento en el tráfico.
¡Después de ejecutar un comando superior, vi que MySQL estaba usando 160% de CPU!
Recientemente he estado optimizando tablas y he cambiado a conexiones persistentes. ¿Podría esto estar causando que MySQL use grandes cantidades de CPU?
Respuestas:
Primero, diría que probablemente desee desactivar las conexiones persistentes, ya que casi siempre hacen más daño que bien.
En segundo lugar, diría que desea verificar sus usuarios de MySQL, solo para asegurarse de que nadie pueda conectarse desde un servidor remoto. Esto también es una cosa importante de seguridad para verificar.
En tercer lugar, diría que desea activar el registro de consultas lentas de MySQL para controlar cualquier consulta que tarde mucho tiempo, y usarla para asegurarse de que no tiene ninguna consulta bloqueando tablas de claves durante demasiado tiempo.
Algunas otras cosas que puede verificar serían ejecutar la siguiente consulta mientras la carga de la CPU es alta:
Esto le mostrará cualquier consulta que se esté ejecutando actualmente o en la cola para ejecutarse, qué es la consulta y qué está haciendo (este comando truncará la consulta si es demasiado larga, puede usar SHOW FULL PROCESSLIST para ver el texto completo de la consulta) .
Usted también querrá mantener un ojo en cosas como el tamaño de buffer, caché de la tabla , caché de consultas y innodb_buffer_pool_size (si está utilizando tablas InnoDB) ya que todas estas asignaciones de memoria puede tener un efecto en el rendimiento de consulta que puede causar que MySQL comer CPU.
También es probable que desee leer lo siguiente ya que contienen buena información.
También es una muy buena idea usar un perfilador. Algo que puede activar cuando lo desee que le mostrará qué consultas está ejecutando su aplicación, si hay consultas duplicadas, cuánto tiempo están tardando, etc., etc. Un ejemplo de algo como esto es en lo que he estado trabajando llamado PHP Profiler pero hay muchos por ahí. Si está utilizando un software como Drupal, Joomla o Wordpress, querrá preguntar dentro de la comunidad, ya que probablemente hay módulos disponibles para ellos que le permiten obtener esta información sin necesidad de integrar nada manualmente.
fuente
Como esta es la publicación principal si buscas en Google para MySQL alto uso o carga de CPU, agregaré una respuesta adicional:
El 1 de julio de 2012, se agregó un segundo salto al tiempo UTC actual para compensar la lenta rotación de la tierra debido a las mareas. Al ejecutar ntp (o ntpd), este segundo se agrega al reloj de su computadora / servidor. A MySQLd no parece gustarle este segundo extra en algunos sistemas operativos, y produce una alta carga de CPU. La solución rápida es (como root):
fuente
date
" && service ntp start El uso de CPU MySQL se redujo instantáneamente de 50 - 100% a 0 - 1%sudo service ntpd stop
en esta configuración.Si este servidor es visible para el mundo exterior, vale la pena verificar si tiene muchas solicitudes para conectarse desde el mundo exterior (es decir, personas que intentan entrar)
fuente