Intermitente “Conexão perdida com o servidor MySQL em 'lendo o pacote de comunicação inicial'”

2

Nosso ambiente da Web consiste em dois servidores.

  1. front-end da Web. Dell PowerEdge R610, RHEL 5.5, Apache 2.2.17, php 5.2.14.
  2. Servidor de banco de dados. Dell PowerEdge R710, x64 do Windows 2008 R2 Standard, MySQL 5.5.11-log x64.

Normalmente, esses dois funcionam perfeitamente bem juntos. No entanto, quando tento fazê-los falar através de uma LAN dedicada em seus NIC secundários (cada máquina tem quatro deles), as coisas ficam escamosas. Eu tenho NIC # 2 em ambas as máquinas configuradas na sub-rede 172.16.1.0/24, sem gateway ou servidores DNS (obviamente, já que são apenas esses dois sistemas), e eu coloco o endereço IP privado de cada máquina no arquivo hosts de o outro. As tabelas de roteamento em ambas as máquinas parecem bem depois que eu faço isso.

Eu tentei isso com um cabo cruzado colocado diretamente entre as duas NICs, e também por meio de uma vlan dedicada no switch no rack. Em ambos os casos, tenho problemas de conexão intermitentes. É uma porcentagem bastante pequena de conexões que falham, mas é suficiente para causar um problema significativo, e eu tenho que voltar para a conexão de rede principal, que irá lidar com todos os outros tráfegos e hosts no switch.

A mensagem de erro completa exibida no log do aplicativo:

SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 110

Estou fazendo algo realmente idiota que está fazendo com que isso não funcione corretamente? Qualquer coisa que eu possa verificar no MySQL que explicaria por que ele não está se conectando ocasionalmente?

    
por db2 10.05.2011 / 21:07

3 respostas

1

A primeira coisa que descartaria é o tamanho do pacote, não para a rede, mas para o MySQL. Certifique-se de definir max_allow_packet para um valor suficientemente grande, especialmente se o seu site estiver usando dados BLOB.

Eu vi um fórum estranho sobre esse mesmo problema . O fórum discute algo sobre como remover ou brincar com um endereço de vinculação para enviar conexões remotas.

Por favor, olhe para isto e veja se isso ajuda.

    
por 13.05.2011 / 03:18
1

Verifique seus logs, recentemente tive um problema idêntico e descobri que era um namespace de innodb corrompido que fazia com que o MySQL perdesse a conexão em qualquer consulta simples.

-Tony

    
por 13.05.2011 / 04:18
0

O erro 110 do MySQL parece ser "Tempo limite da conexão esgotado". Certifique-se, a conexão funciona fora do MySQL (ping o outro host, tente telnetting para a porta do MySQL 3306). Se isso não funcionar, verifique as configurações do firewall no servidor. Tente definir o tipo de rede como "Perfil do domínio". Caso contrário, o Windows Server 2008 gosta de se comportar de maneira muito estranha.

    
por 04.07.2012 / 12:36