Problembeschreibung
Das Testumgebungsprojekt lief normal und niemand bewegte es, aber es erschien unerklärlicherweise eine Ausnahme 502. Nach einer Untersuchung wurde festgestellt, dass die Anwendung beim Zugriff auf mysql den folgenden Fehler meldete:
com.mysql.cj.exceptions.CJException: null, message from server: "Host '192.168.0.118' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
Identifizieren Sie das Problem
Zunächst einmal ist der Datenbankzugriff mit Navicat normal, aber der Anwendungszugriff funktioniert nicht, selbst ein Neustart der mysql-Instanz hat keine Auswirkung.
Schließlich steht fest, dass die Anwendung der Testumgebung in kurzer Zeit generiert werden sollEine große Anzahl von unterbrochenen Datenbankverbindungen führen zu, und die Anzahl der fehlgeschlagenen VerbindungenMaximalwert von mysql's max_connection_errors überschritten
Problem gelöst
1. Melden Sie sich bei mysql an und verwenden Sie den Befehl flush hosts, um die Hosts-Datei zu bereinigen
mysql -uroot -p
flush hosts;
2. Passen Sie die Größe der maximalen Anzahl von Verbindungen und der maximalen Anzahl von Fehlerverbindungen von mysql an
Zeigen Sie die maximale Anzahl fehlerhafter Verbindungen in mysql an
show variables like '%max_connect_errors%'
Zeigen Sie die maximale Anzahl von MySQL-Verbindungen an:
show variables like 'max_connections';
Ändern Sie die Anzahl der Verbindungen
set global max_connections = 1000;
set global max_connect_errors = 1000;
Die beiden oben genannten Methoden können das Projekt vorübergehend normal laufen lassen, aber sie sollten das wesentliche Problem lösen:AnwendungEs werden zu viele MySQL-Verbindungen generiert und nicht geschlossen, was zu einer Blockierung führt