Mysql abrupta desaceleração, o que causa potencial?

4

Alguns dias atrás, o mysql tornou-se repentinamente muito lento, com as consultas demorando mais de 10s para serem concluídas quando eles terminaram com menos de 100ms ... Durou cerca de uma hora e depois a velocidade voltou ao normal. O que poderia causar um problema desses?

Mais algumas informações: A versão do mysql é 5.0.51a O banco de dados mysql está em uma caixa dedicada com 1,5 GB de RAM. Não houve troca sendo usada quando o servidor mysql estava lento.

Aqui está o mysqlreport do banco de dados link Nenhum dos caches está cheio ..

Eu notei que o servidor de dns usado pelo servidor para resolver o nome do host era um pouco lento algumas vezes ultimamente. Isso poderia ter um impacto?

Obrigado

    
por Thomas Wang 23.10.2011 / 21:09

2 respostas

3

Existem muitos fatores que podem ser a causa disso.

O resolvedor lento não deve ter impacto se você puder avaliar as consultas por conta própria. No entanto, um resolvedor lento pode definitivamente ter um efeito ao se conectar ao servidor - se os usuários tiverem acesso com base no nome do host ao qual se conectam. O MySQL também possui uma opção para registrar o nome do host das conexões.

O relatório mysql não diz muito sobre os índices. O que eu costumo fazer quando vejo isso acontecendo, é que eu pego uma das consultas que demoram muito tempo e corro EXPLAIN nela. Se ele não usar nenhum índice e precisar fazer uma varredura completa na tabela, verifico se posso adicionar um índice que o torne mais rápido. Eu vi índices desaparecem por acidente antes (alguém apagou por acidente, um script de atualização excluiu e não colocou de volta depois, ou similar).

O servidor pode estar sobrecarregado de várias formas:

  • O que sua métrica da CPU diz? Está preso no IOWait, na hora do sistema, na hora do usuário ou está realmente inativo?
  • Dependendo do banco de dados, pode ser um cache de consultas frias que precisa de algum tempo para se aquecer após a reinicialização do servidor. Isso é improvável se os dados mudarem muito - mas pode acontecer se for usado principalmente para pesquisas.

Também pode ser uma série de consultas que bloqueiam a tabela, impedindo que as pesquisas ocorram em aproximadamente 10 segundos por vez. Você pode obter informações sobre isso se registrar consultas lentas em um arquivo.

Poderia ser um bug no MySQL. Há um fardo muito pesado em provar isso, mas acontece.

Você precisa de muito mais dados para descobrir a causa disso. Você precisa de métricas de CPU, memória, métricas do MySQL e tal. Posso sugerir uma ferramenta de monitoramento como o Munin? Existe um plugin MySQL muito bom que lhe dará dados interessantes como acontece.

    
por 23.10.2011 / 21:26
1

Provavelmente, a maneira mais rápida de ter uma idéia real do que poderia estar consumindo recursos em seu servidor MySQL é esse comando simples:

SHOW PROCESSLIST;

Ele lhe dirá quais processos do MySQL estão ativos, há quanto tempo eles estão ativos e o que estão fazendo. Toda vez que as coisas ficaram complicadas com meu servidor MySQL, o SHOW PROCESSLIST tem sido minha primeira linha de 'defesa'.

    
por 23.10.2011 / 22:13

Tags