Connessione interrotta (errore durante la lettura dei pacchetti di comunicazione)


8

Il mysql error.log mostra

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

Mentre il lato client ottiene:

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'

Ho letto il manuale di mysql su questo e molti altri thread. Quindi ho modificato alcuni valori in my.cnf

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

Guardato il registro delle query di una connessione interrotta:

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

Stato della tabella controllata. bind-address è l'IP del server ma devo essere in grado di connettermi dall'esterno.

Aborted_connects is 196

Puoi controllare la qualità della connessione tra i due host? 100 ping di base dovrebbero fare ..
martedì

Risposte:


4

Sulla base dei dati limitati, mi chiedo se hai un firewall tra il client e il server MySQL (potrebbe essere direttamente sugli host) che consente 3306 al server MySQL ma blocca i pacchetti di risposta alla richiesta SYN iniziale.

Potresti voler eseguire un dump di pacchetti su entrambi i lati per capire cosa sta succedendo sul lato TCP e / o controllare eventuali firewall che esistono tra entrambi i lati.


Grazie. Quali dati potrei fornire per chiarire questo aspetto? Non ho un firewall dalla mia parte, non sono sicuro dell'altro lato. Principalmente la connessione funziona, quindi immagino che non sia un firewall. Ho provato a scaricare i pacchetti ma c'è molto traffico e il problema si presenta solo poche volte al giorno. Non sono riuscito a definire un filtro che cattura solo i pacchetti di cui ho bisogno.
PiTheNumber

4

Sospetto che questo non sia un problema mysql in quanto tale.

Verificare che il livello di trasporto sia OK. È possibile ottenere una connessione TCPC utilizzando telnet [db_server] 3306?

Il tuo client e server sono d'accordo sul fatto che la connessione debba essere crittografata SSL?

Non riesco a pensare a molte situazioni in cui vorrei eseguire una connessione mysql su Internet pubblica, che sospetto sia ciò che intendi per "in grado di connettersi dall'esterno". Se non crittografato, si tratta di un enorme rischio per la sicurezza e il sovraccarico della configurazione di SSL per ogni connessione è troppo elevato per la maggior parte degli usi. Potresti voler guardare usando un tunnel crittografato persistente di qualche tipo.


telnet connect e la maggior parte delle connessioni funzionano bene solo di tanto in tanto questo problema appare. Sì, è una connessione su Internet pubblica. Vorrei avere la crittografia qui, ma non controllo l'altra estremità. Comunque devo prima stabilizzare la connessione.
PiTheNumber

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.