MySQL - Identificando uma consulta interminável de falha do servidor

3

Meu servidor fica travando devido a erros OOM causados pelo MySQL. Estou convencido de que há uma consulta neste site que está errada, é muito longa e causa esse problema. Meu servidor e os logs do MySQL mostram muito pouca tensão até que o pico e o problema aconteçam. Eu realmente gostaria de identificar essa consulta problemática e corrigir a consulta. Eu sinto que o mysql tuning um servidor de produção bom para sobreviver a uma consulta ruim, que eu quero remover de qualquer maneira, é uma maneira estranha de fazê-lo.

Eu tenho logs de consulta lenta configurados, mas essa consulta de problema nunca aparece no log, acredito que, como a consulta nunca termina, o servidor falha primeiro. Como posso registrar ou identificar essa consulta problemática?

FYI Houve outras consultas neste site que causaram esse problema e eu as identifiquei e corrigi-las. Eles normalmente aconteciam por causa de cláusulas como "BETWEEN :: startTime AND :: endTime" e por engano, :: startTime estava sendo configurado para 0, tornando o tempo de espera enorme.

Fui aconselhado a usar EXPLAIN, o que eu entendo, o problema é que eu não sei qual consulta para "EXPLAIN":).

Todas as sugestões de como posso identificar esta consulta serão apreciadas. Obrigado!

    
por maestrojed 09.04.2012 / 19:38

3 respostas

1

Eu tenho uma sugestão maluca para você.

Há uma postagem que escrevi no DBA StackExchange para pesquisar na lista de processos e informar os 20 piores desempenhos consultas para qualquer intervalo que você escolher . Isso é melhor que o log de consultas lentas porque o log de consultas lentas registrará apenas as consultas concluídas. Meu método irá capturar as consultas atualmente em execução no ato.

Eu implementei isso em algum momento no meio do ano passado com base neste vídeo do YouTube .

    
por 09.04.2012 / 20:06
1

Para complementar outras respostas, gostaria de apontar para Percona Toolkit , que é a minha ferramenta número 1 para análise de desempenho do MySQL . Por favor, dê uma olhada em pt-query-digest

    
por 09.04.2012 / 20:14
1

Eu criei a ferramenta pt-stalk no Percona Toolkit para ajudar a diagnosticar problemas que acontecem quando você não está procurando. Ele não apenas ajudará a capturar a consulta problemática, mas reunirá informações suficientes para determinar se a consulta é o problema - e, caso contrário, o que mais poderia ser.

    
por 10.04.2012 / 01:42

Tags