Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: ccrunch en 1 Diciembre 2014, 18:36 PM

Título: MySQL consume 300% de CPU
Publicado por: ccrunch en 1 Diciembre 2014, 18:36 PM
Hola a todos, los que lean este tema y ya me conozcan (porque ya pregunté algo de optimización de MySQL) se van a cagar de risa pero bueno  :xD

A ver, tengo un servidor con una web y estoy viendo en los procesos del TOP que consume 300%. Yo la verdad es que me encargo de mantenerlo, tanto apache, como servidor correo, MySQL, cron, scripts, etc, pero es que esto no tengo ni idea de qué pasa :xD

Me podéis dar consejos sobre cómo intentar ver cuál es el problema? En google vi un script que te dice más o menos qué hay que modificar, pero quisiera algo más... creíble  :xD

Me podéis ayudar?

Salu2 y gracias a todos!
Título: Re: MySQL consume 300% de CPU
Publicado por: el-brujo en 1 Diciembre 2014, 18:45 PM
Lo primero que tienes que saber es las QPS (Queries per second, consultas por segundo) del servidor MySQL. El tamaño de la bases de datos y las consultas lentas.

Existen varios scripts para modificar las variables de MySQL (query caché, etc).

MySQL Tuning Primer
MySQLTuner
mysqlreport

Herramientas para Optimizar MySQL
http://foro.elhacker.net/tutoriales_documentacion/herramientas_para_optimizar_mysql-t214396.0.html

MySQL a fondo (Optimización my.cnf, MyISAM vs InnoDB)
http://blog.elhacker.net/2012/05/mysql-fondo-optimizacion-mycnf-myisam.html
Título: Re: MySQL consume 300% de CPU
Publicado por: ccrunch en 1 Diciembre 2014, 18:55 PM
Muchas gracias, como siempre ayudando a los demás  :)

Le echaré muchos vistazos, porque me hace falta  :xD

Gracias de nuevo.
Título: Re: MySQL consume 300% de CPU
Publicado por: 6666 en 1 Diciembre 2014, 18:59 PM
Estas solicitando consultas a varios registros a la vez de gran tamaño u solicitando una funcion mysql de uso general cientos de veces, como es math() . revisa todas las propiedades de la tabla y bases, igualmente para las consultas de busqueda.
Título: Re: MySQL consume 300% de CPU
Publicado por: ccrunch en 1 Diciembre 2014, 22:47 PM
Hola a todos, he conseguido un pequeño copia/pega de información de la BD: http://pastebin.com/VWQCrhLs

Salu2
Título: Re: MySQL consume 300% de CPU
Publicado por: moikano→@ en 2 Diciembre 2014, 01:08 AM
El mismo mysql te puede hechar una mano para saber que consultan cuestan mas. En el fichero /etc/my.conf puedes añadir estas dos líneas.

long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log

La consultas que cuesten mas de un segundo se guardarán en ese log.

También puedes hacer lo siguiente por consola de mysql para saber que procesos hay y cuales se quedan colgados y cuanto tiempo llevan.
SHOW PROCESSLIST;

Si lo quieres ver como un htop puedes ejecutar este comando para ver lo mismo que el show pero en tiempo real y con mas datos. Este comando directamente por consola bash.
mytop --prompt -u root

Suerte.
Título: Re: MySQL consume 300% de CPU
Publicado por: ccrunch en 2 Diciembre 2014, 18:30 PM
La info del mysql me da esto:
Uptime: 1323861  Threads: 7  Questions: 108110567  [b]Slow queries: 11816[/b]  Opens: 133651  Flush tables: 1  Open tables: 64  [b]Queries per second avg: 81.663[/b]


Eso en negrita por lo visto está un poco mal, cómo puedo detectar esas consultas?
He creado el log para las slow-queries y el fichero de momento está vacío, aunque haya hecho esto:
Citarmkdir /var/log/mysql
touch /var/log/mysql/log-slow-queries.log
chown mysql.mysql -R /var/log/mysql

Salu2
Título: Re: MySQL consume 300% de CPU
Publicado por: el-brujo en 2 Diciembre 2014, 18:45 PM
81 consultas por segundo no está nada mal, me refiero que son bastantes consultas por segundo.

Parece que tienes muchas slow queries. Se guardará la consulta en el fichero log-slow-queries.log que duren más de un segundo (long_query_time=1)

Y estás usando el motor InnoDB

Copia y pega el contenido del fichero my.cnf para ver la configuración que estás usando.

¿Qué versión de MySQL estás usando? Me refiero a la rama 5.5?
Título: Re: MySQL consume 300% de CPU
Publicado por: moikano→@ en 2 Diciembre 2014, 18:49 PM
CitarHe creado el log para las slow-queries y el fichero de momento está vacío, aunque haya hecho esto:
Has probado a reiniciar mysql? si no no  lo creará
Título: Re: MySQL consume 300% de CPU
Publicado por: ccrunch en 2 Diciembre 2014, 18:53 PM
Citar[mysqld]
bind-address=127.0.0.1
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

ft_min_word_len = 1

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#queries lentas
long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log
CitarHas probado a reiniciar mysql? si no no  lo creará
Lo sé pero como hay consultas y escrituras en la BD es por miedo a que se corrompa.

Salu2 a los dos y gracias!
Título: Re: MySQL consume 300% de CPU
Publicado por: MinusFour en 2 Diciembre 2014, 18:57 PM
Cita de: ccrunch en  2 Diciembre 2014, 18:53 PM
Lo sé pero como hay consultas y escrituras en la BD es por miedo a que se corrompa.

Salu2 a los dos y gracias!

No deberia.
Título: Re: MySQL consume 300% de CPU
Publicado por: ccrunch en 2 Diciembre 2014, 19:31 PM
Cita de: MinusFour en  2 Diciembre 2014, 18:57 PM
No deberia.
Perdona, había leído mal. No hice un restart, pero sí un reload.

Salu2!
Título: Re: MySQL consume 300% de CPU
Publicado por: moikano→@ en 2 Diciembre 2014, 19:33 PM
CitarPerdona, había leído mal. No hice un restart, pero sí un reload.
Creo que hay que hacer un restart.