Qual usuário está sobrecarregando a CPU do servidor de banco de dados MySQL?

4

Eu mantenho servidores de webhosting e, na maioria das vezes, um servidor fica lento como resultado do aumento da carga ou de uma grande quantidade de recursos da CPU usados. Eu observei que é o uso do MySQL que resulta no grande aumento na carga e no servidor sendo rastreado, mas gostaria de descobrir qual usuário é responsável pelo alto uso do MySQL?

    
por GamingX 06.10.2012 / 22:26

3 respostas

3

Isso pode ser feito com um SHOW PROCESSLIST; razoavelmente básico da CLI do MySQL como um usuário administrativo do MySQL.

Se houver um processo que precisa ser encerrado, um simples KILL <query Id>; deve cuidar disso.

Não há nada acontecendo para essa caixa de dev, mas é um exemplo do que você veria na saída:

mysql> show processlist;
+----+------+-----------+--------+---------+------+-------+------------------+
| Id | User | Host      | db     | Command | Time | State | Info             |
+----+------+-----------+--------+---------+------+-------+------------------+
|  7 | root | localhost | wikidb | Query   |    0 | NULL  | show processlist |
+----+------+-----------+--------+---------+------+-------+------------------+

Como você pode ver, ele exibe informações úteis sobre o banco de dados que executa a consulta, o tempo de execução, o status da consulta e o conteúdo da consulta.

    
por 06.10.2012 / 22:37
1

Concordo com as respostas do @Michael Hampton e @ Adrian, mas gostaria de adicionar minha própria sugestão: tente fazer login no servidor e execute o seguinte:

[~]# watch mysqladmin pr

Isso deve fornecer os bancos de dados que estão sendo acessados e as consultas que são executadas, além da adição de "watch" para monitorar e atualizar a lista. Se algum banco de dados estiver sobrecarregando o servidor, você pode tentar executar o seguinte:

service mysql stop

myisamchk -r /var/lib/mysql/dbname/*.MYI

service mysql start

Se o problema persistir após o reinício, talvez seja necessário otimizar suas consultas ou limitar o acesso do usuário aos recursos do servidor MySQL.

    
por 16.10.2012 / 21:11
0

Outra boa sugestão é habilitar logs de consulta / definir o tempo de consulta lento baixo e ter um pico nesses / usar uma ferramenta como percona-toolkit para analisá-los.

Nós pessoalmente utilizamos a compilação MariaDB do MySQL que tem o userstats patch aplicado que modifica o information_schema para incluir dados úteis como tempo de CPU usado, tempo ocupado e adiante.

Exemplo:

+------------------+----------+-----------+--------------+--------------+
| USER             | CPU_TIME | BUSY_TIME | ROWS_FETCHED | ROWS_UPDATED |
+------------------+----------+-----------+--------------+--------------+
| xxx_agaipdf |   208850 |    219735 |    372405321 |       950924 |
| xxx_pdfseus |   179626 |    196981 |    145208779 |       771474 |
| xxx_gopdf   |   177303 |    191366 |    323861619 |       653246 |
| xxx_nextuse |   140624 |    153672 |     37374285 |       425618 |
| xxx_gospel  |   135814 |    142874 |     65301676 |       491579 |
+------------------+----------+-----------+--------------+--------------+
    
por 16.10.2012 / 21:38

Tags