Hace poco me tope con un problema en uno de los servidores que administro, el mysql se colgo un par de veces en un mes y no sabía por qué.

Decidí buscar información para ver como podía ver que consultas estaban demorándose mucho y podían causar el cuelgue del servidor. Nota: Los comandos que he utilizado están sobre un servidor que usa plesk y centos 4, si usas otro sistema es posible que las ubicaciones de los archivos cambien.

Bien, primero, editamos el archivo de configuración de mysql, y añadimos las lineas:

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

La primera es el numero, en segundos, a partir del cual se considerará que la consulta es lenta. La segunda, el archivo en el que se guardarán dichas consultas (en mi caso, tuve que crearlo a mano para que me las guardara).

Después, tendremos que reiniciar el servidor mysql con:

/etc/initd/mysqld restart
  1.  
  2. Si queremos comprobar que las consultas lentas están siendo logeadas, lo podemos hacer escribiendo <pre lang="c">mysqladmin -u admin -p var |grep log_slow_queries

esto nos devolverá On o Off, según esté activado o desactivado.

Si tenemos phpmyadmin instalado, podemos entrar a este, después picnhamos sobre “mostrar información en tiempo de ejecución de MySql”. Podremos ver un campo llamado “slow_queries” que nos mostrará la cantidad de consultas lentas que han sido ejecutadas.

También puede sernos util ver que consultas se están ejecutando actualmente en el servidor. Podemos ejecutar mysqladmin -u admin -p proc status para saberlo.

Slow queries en el manual de mysql