Verbindungsabbruch (Fehler beim Lesen der Kommunikationspakete)

8

Das mysql error.log zeigt

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

Während die Client-Seite bekommt:

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'

Ich habe das MySQL-Handbuch darüber und viele andere Themen gelesen . Also habe ich einige Werte in my.cnf geändert

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

Abfrageprotokoll einer unterbrochenen Verbindung angesehen:

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

Überprüfter Tabellenstatus. Bindungsadresse ist die Server-IP, aber ich muss in der Lage sein, eine Verbindung von außen herzustellen.

Aborted_connects is 196
PiTheNumber
quelle
Können Sie die Verbindungsqualität zwischen den beiden Hosts überprüfen? Grundlegende 100 Pings sollten tun ..
melsayed

Antworten:

4

Aufgrund der begrenzten Datenmenge frage ich mich, ob Sie eine Firewall zwischen dem Client und dem MySQL-Server haben (möglicherweise direkt auf den Hosts), die 3306 für den MySQL-Server zulässt, aber Antwortpakete für die anfängliche SYN-Anforderung blockiert.

Möglicherweise möchten Sie auf beiden Seiten einen Paketspeicherauszug durchführen, um herauszufinden, was auf der TCP-Seite geschieht, und / oder um zwischen beiden Seiten vorhandene Firewalls zu überprüfen.

Matthew Ife
quelle
Vielen Dank. Welche Daten könnte ich bereitstellen, um dies zu klären? Ich habe keine Firewall an meinem Ende, nicht sicher über die andere Seite. Meistens funktioniert die Verbindung, also ist es wohl keine Firewall. Ich habe versucht, Pakete zu entleeren, aber es gibt viel Verkehr und das Problem tritt nur einige Male am Tag auf. Ich konnte keinen Filter definieren, der nur die benötigten Pakete erfasst.
PiTheNumber
3

Ich vermute, dass dies kein MySQL-Problem ist.

Stellen Sie sicher, dass die Transportschicht in Ordnung ist. Können Sie eine TCP-Verbindung mit bekommentelnet [db_server] 3306 ?

Sind sich Client und Server einig, ob die Verbindung SSL-verschlüsselt werden soll?

Ich kann mir nicht viele Situationen vorstellen, in denen ich eine MySQL-Verbindung über das öffentliche Internet herstellen möchte. Ich vermute, das ist das, was Sie unter "Verbindung von außen herstellen" verstehen. Wenn unverschlüsselt, stellt dies ein großes Sicherheitsrisiko dar, und der Aufwand für das Einrichten von SSL für jede Verbindung ist für die meisten Anwendungen zu hoch. Vielleicht möchten Sie einen dauerhaften verschlüsselten Tunnel verwenden.

mc0e
quelle
Telnet-Verbindung und die meisten Verbindungen funktionieren nur von Zeit zu Zeit einwandfrei. Dieses Problem tritt auf. Ja, es ist eine Verbindung über das öffentliche Internet. Ich hätte gerne eine Verschlüsselung hier, aber ich kontrolliere das andere Ende nicht. Jedenfalls muss ich zuerst die Verbindung stabilisieren.
PiTheNumber