O MySQL para de aceitar conexões sobre o 3306, ainda trabalhando no localhost

1

Eu tenho um banco de dados MySQL que parou de aceitar conexões do meu servidor web completamente. Então eu liguei para o servidor e comecei a checar seus sinais vitais. Os discos rígidos tinham muito espaço aberto, e havia bastante memória disponível e espaço de troca. Nada estava consumindo a CPU (quase 100% inativa). Eu até me conectei ao MySQL localmente e executei algumas consultas sem nenhum problema. Mas o SHOW PROCESSLIST só mostrou minha própria conexão, nenhuma outra.

O pior de tudo, no log do MySQL, nenhum erro coincidiu remotamente com a indisponibilidade do servidor.

No servidor da web, recebi um erro dizendo "Conexão perdida com o servidor MySQL durante a consulta" no momento em que a indisponibilidade foi iniciada, seguida por um monte de erros "O servidor MySQL foi eliminado".

Há somente um outro aplicativo no servidor que aceita conexões de rede, e eu matei esse (no caso de ter muitas conexões abertas ou algo assim), mas isso não ajudou.

Finalmente, reiniciei o processo do MySQL e tudo está (por enquanto) funcionando novamente.

O que mais devo verificar nessas circunstâncias? Alguma ideia do problema? E como posso verificar se, de fato, é o problema?

    
por Ben Dilts 07.01.2011 / 15:25

2 respostas

1

Como a resposta acima, verifique se não há alterações no iptables que estejam bloqueando o 3306. Além disso, certifique-se de que seu /etc/my.cnf não seja substituído, possivelmente por uma atualização do pacote de distribuição. Você NÃO deve ver a diretiva skip-networking no [mysqld]

    
por 07.01.2011 / 19:46
0

Você deve lsof ou netstat verificar se o processo está escutando na porta 3306 na interface correta (ele está ligado apenas a 127.0.0.1 ou está vinculado aos hosts ip ou *). Você também deve verificar quantos arquivos o processo abriu (você pode estar correndo para um ulimit). Você também deve se certificar de que nada mudou com as regras do iptables para fazer com que ele seja bloqueado (embora, a menos que você esteja usando alguns módulos avançados, a reformulação de módulos não teria ajudado). Certifique-se também de que não esteja usando algo que possa estar atualizando as regras do tcp wrappers como negar hosts (verifique /etc/hosts.* - embora, mais uma vez, isso provavelmente não tenha sido corrigido por uma reinicialização). A próxima vez que isso acontecer acione o wireshark no servidor myswl e no servidor de aplicativos e filtre na porta 3306 enquanto tenta se conectar ao mysql pela rede.

    
por 07.01.2011 / 19:35