Wir haben Probleme mit Benutzern, die Abfragen / Ansichten in Drupal ausführen, die gelegentlich dazu führen, dass unsere Website einfriert. Das Einfrieren tritt auf, weil die Abfrage dazu führt, dass die Anzahl der Datenbankverbindungen auf über 400 steigt. Grundsätzlich verlangsamt sich die Site schrecklich, wenn die Site über 100 Datenbankverbindungen geht, und reagiert einfach nicht.
Wir führen Amazon RDS mit MySQL Red Hat Linux aus
Wir haben einen ausreichend großen EC2 auf dem Front-End-App-Server und einen ausreichend großen RDS.
Wir beheben dieses Problem jetzt, indem wir die fehlerhafte Abfrage finden und beenden. Sobald die Abfrage beendet ist ... fallen unsere Datenbankverbindungen auf etwa 20, was der normale Betrag ist, den Sie bei der Überwachung der Site-Statistiken sehen.
Gibt es eine Möglichkeit, die fehlerhafte Abfrage zu stoppen und zu beenden, bevor sie zu lange ausgeführt wird und die Verbindungen verbraucht? Ich versuche, das Beenden der fehlerhaften Abfrage zu automatisieren, bevor sie auftritt, oder zumindest nach 30 Sekunden zu erkennen, dass es sich um eine fehlerhafte Abfrage handelt, und sie zu beenden.
quelle
Antworten:
Hier ist eine gespeicherte Prozedur zum Beenden von SELECTs mit langer Laufzeit
Um SELECTs zu beenden, die länger als 30 Sekunden laufen, führen Sie dies aus
Wenn Sie sehen möchten, dass die Verbindungen unterbrochen werden, führen Sie dies aus
Vielleicht können Sie ein MySQL-Ereignis erstellen, um diese gespeicherte Prozedur jede Minute aufzurufen.
Wenn Amazon Ihnen nicht die Berechtigung EVENT gewährt, müssen Sie ein externes Shell-Skript auf den EC2-Server schreiben, um eine Verbindung zur Datenbank herzustellen und die gespeicherte Prozedur auszuführen. Dieses Shell-Skript kann in eine Crontab eingefügt werden.
Wenn Amazon Ihnen nicht die Berechtigungen PROCESS und SUPER gewährt , müssen Sie möglicherweise die Datenbank aus RDS in eine andere EC2-Instanz verschieben, in der MySQL ausgeführt wird, um dies zu erreichen. Sie können das MySQL-Ereignis dann ohne die Hosting-Einschränkungen von Amazon erstellen.
quelle