Exibindo a lista de queries MYSQL em execução

Se no servidor que você administra há uma alta carga na CPU sem uso extra da RAM então o problema pode estar relacionado com o banco de dados, em nosso caso o MySQL.

É muito difícil encontrar a solução para a maioria dos problemas de um servidor, e neste caso é ainda mais pois se isto estiver ocorrendo você terá que rastrear as queries (chamadas ao banco de dados), descobrir do qual site elas têm origem e tentar encontrar qual o plugin ou função que está causando o problema.

Acesse o servidor onde está o banco de dados como root e digite o comando:

> mysqladmin -u root -p -i 1 processlist

* Será solicitada a senha admin do MySQL

Este comando irá mostrar em um intervalo de 1 segundo todas as queries feitas ao DB. Preste atenção principalmente àquelas com maior tempo de execução. Se houverem queries demoradas com certeza há algo errado com o seu website.

A solução para queries em sleep mode que demoram muito tempo para desaparecer está na configuração do MySQL. Edite o arquivo /etc/mysql/my.cnf e dentro do bloco [mysqld] adicione as seguintes linhas:

interactive_timeout=120
wait_timeout=120

Em seguida reinicie o MySQL. Com isso as slow queries serão excluídas se não forem executadas em até 120 segundos.

Na versão atual do MySQL o timeout padrão é muito alto e causa problemas como por exemplo o alto uso da CPU por scripts intermináveis.

Para exibir o valor atual das variáveis acesse o MySQL com o comando:

> mysql -u root -p

*Digite a senha admin do MySQL para acessar o console. Em seguida digite a seguinte query:

SHOW GLOBAL VARIABLES LIKE “%wait_timeout%”;

Você achou esse artigo útil?