Acompanhe as conexões do MySQL entre dois servidores [closed]

1

Ocasionalmente, temos um problema com um servidor sendo executado com lentidão lenta, mas a CPU nunca fica muito alta. Um sysadmin examinou isso e disse que a qualquer momento há um grande número de conexões da porta MySQL do Servidor A - que está rodando bem - e do Servidor B - o servidor com os problemas. Os principais sintomas vistos no Servidor B são tempos de carregamento de página muito lentos, vistos predominantemente por um travamento inicial antes de a página fazer qualquer coisa e conexão lenta com o Shell. Vale a pena ressaltar que isso não é específico do site / aplicativo - não causado por Javascript ou qualquer coisa assim, já que temos o mesmo aplicativo sendo executado em 3 ou 4 outros servidores de mesma especificação sem nenhum problema.

O que eu quero fazer é tentar rastrear a natureza exata dessas conexões MySQL entre os dois servidores. Então, qual é a fonte, qual é o destino, qual é o propósito. Devo procurar ativar o log geral (atualmente desativado)? Há mais alguma coisa que eu possa tentar? Ambos os servidores estão rodando o CentOS (um em 4.8 e o outro em 5.5) e ambos em versões mais recentes do WHM / cPanel com versões mais recentes do PHP / Apache.

Obrigado.

    
por robjmills 29.06.2010 / 12:47

3 respostas

1

Ativar o log é uma boa idéia, você também pode usar o cliente MySQL Administrator para ver as conexões abertas e ver o que elas estão fazendo quando você enfrenta o problema.

Embora a partir de sua descrição eu possa pensar em um problema muito comum, que é um problema de DNS que está causando o MySQL para esperar por um tempo limite de DNS antes de processar uma conexão de entrada. Isso geralmente se manifesta no que você descreve em situações em que o aplicativo abre uma nova conexão do MySQL para cada solicitação (em vez de usar um pool de conexão persistente).

Leia mais sobre isso aqui: link

(skip_name_resolve em my.cnf é a opção IIRC)

    
por 29.06.2010 / 22:06
1

Se você tiver dois servidores se conectando e tiver conexões 'lentas', mas uma vez que o encadeamento se conecta, as coisas são rápidas, eu suspeitaria que a resolução do DNS do host remoto possa estar causando um problema.

skip-name-resolve

no seu /etc/mysql/my.cnf (ou arquivo equivalente) na seção [mysqld] irá impedir essas pesquisas de DNS.

Certifique-se de que suas doações sejam feitas usando IPs em vez de nomes de host.

    
por 29.06.2010 / 22:42
1

você também pode tentar uma abordagem menos intrusiva [sem ativar os registros que vêm com sobrecarga de desempenho]. cheirar o tráfego usando tcpdump [você pode fazê-lo em qualquer um dos lados da conexão ou no meio - em algum roteador ou switch gerenciável com espelhamento de porta].

tcpdump -s 1600 -w dump.cap -i eth0 host 10.1.2.3 and port 3306

analise dump.cap - primeiro com wireshark [nesse estágio você deve saber se há muitas conexões paralelas ou não ], e se necessário - veja mk-query-digest que pode lhe dar uma boa visão sobre consultas provenientes de logs do mysql ou do tráfego do tcpdump.

    
por 29.06.2010 / 23:33