Conexão anulada (obteve um erro ao ler os pacotes de comunicação)

7

O mysql error.log mostra

[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)

Enquanto o lado do cliente fica:

Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Lost connection to MySQL server at 'reading authorization packet', system error: 0
and after a while: Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

Eu li o manual mysql sobre isso, e vários outros tópicos . Então eu mudei alguns valores em my.cnf

max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G

Analisou o log de consulta de uma conexão quebrada:

22400 Connect user@host on dbname
22400 Query SELECT @@sql_mode
22400 Query     SET SESSION sql_mode=''
22400 Query     SET NAMES utf8
22400 Init DB   dbname
22400 Init DB   dbname

Verificado o status da tabela. O bind-address é o IP do servidor, mas eu preciso ser capaz de se conectar de fora.

Aborted_connects is 196
    
por PiTheNumber 11.06.2014 / 16:44

3 respostas

4

Baseado nos dados limitados, eu me pergunto se você tem um firewall entre o cliente e o servidor MySQL (ele pode estar nos hosts diretamente), o que permite 3306 ao servidor MySQL, mas está bloqueando os pacotes de resposta para o pedido SYN inicial. .

Você pode querer executar um dump de pacote em ambos os lados para descobrir o que está acontecendo no lado do TCP e / ou verificar qualquer firewall existente entre os dois lados.

    
por 04.07.2014 / 22:18
3

Eu suspeito que isso não seja um problema do mysql como tal.

Verifique se a camada de transporte está OK. Você pode obter uma conexão tcp usando telnet [db_server] 3306 ?

O seu cliente e servidor estão de acordo sobre se a conexão deve ser criptografada por SSL?

Não consigo pensar em muitas situações em que gostaria de executar uma conexão mysql pela Internet pública, que eu suspeito ser o que você entende por "poder se conectar de fora". Se não estiver criptografado, isso representa um grande risco de segurança, e a sobrecarga de configuração do SSL para cada conexão é muito alta para a maioria dos usos. Você pode querer usar um túnel criptografado persistente de algum tipo.

    
por 06.07.2014 / 19:52
1

A conexão anulada é considerada um erro de conexão no MySQL, que pode não estar registrado no log de erros do MySQL. Veja abandonou as conexões TCP não registradas como erros, mas resulta em host bloqueado .

    
por 30.08.2016 / 05:05

Tags