Ich habe regelmäßig folgenden Fehler:
PHP Fataler Fehler: Uncaught Ausnahme 'PDOException' mit Nachricht 'SQLSTATE [HY000] [1129] Host' MY SERVER 'ist wegen vieler Verbindungsfehler blockiert; Entsperre mit 'mysqladmin flush-hosts'
Es ist einfach, das Problem mit einem regulären Befehl (wie crontab) mysqladmin flush-hosts zu lösen oder die Systemvariable max_connect_errors zu erhöhen, wie in hier .
ABER! Was sind " viele aufeinander folgende unterbrochene Verbindungsanforderungen ", warum passiert das?
Ich würde das Problem lieber stromaufwärts verhindern, anstatt die Blockierung zu korrigieren.
MySQL-Version: 5.5.12. Ich benutze Zend Framework 1.11.10 und Doctrine 2.1.6.
In meinem PHP-Code gibt es weder mysql_close () noch mysqli_close ().
max_connect_errors hat den Standardwert 10, und ich möchte es noch nicht erhöhen, ich möchte verstehen, warum ich die Fehler habe. Ich benutze alle 5 Minuten einen Cron, der einen mysqladmin flush-hosts-Befehl ausführt.
Diese Antwort ist vom Entwurf her eine Sicherheitsmaßnahme und resultiert aus dem Erreichen des Werts max_connection_errors für mysql. Hier ist ein Link , der von Oracle zur Verfügung gestellt wird beschreibt die meisten möglichen Ursachen und Lösungen.
Letztendlich bedeutet dies, dass es so viele aufeinander folgende Verbindungsfehler gibt, dass MySql nicht mehr auf Verbindungsversuche reagiert.
Ich benutze alle 5 Minuten einen Cron, der einen mysqladmin flush-hosts macht Befehl.
Da Sie diese Grenze so schnell erreichen, gibt es nur wenige mögliche Täter:
Es ist wahrscheinlich, dass dies in jedem Fall schwierig zu finden ist.
Während PDO nicht explizit das Schließen von mysql-Verbindungen erfordert, gibt es in solchen Fällen einige Praktiken, die solche ServerAdmin-Hunts verhindern können.
dev.mysql.com/doc/refman/5.0/en/cursors.html
Dies bedeutet, dass mysqld viele Verbindungsanforderungen vom angegebenen Host erhalten hat, die in der Mitte unterbrochen wurden. Weitere Informationen finden Sie in diesem Link in der Dokumentation.