Foro de elhacker.net

Programación => 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.
Código:
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.
Código:
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.
Código:
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:
Código:
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:
Citar
mkdir /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
Citar
He 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
Citar
Has 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
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
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
Citar
Perdona, había leído mal. No hice un restart, pero sí un reload.
Creo que hay que hacer un restart.