Ihre beste Wette ist es, max_connections
zu erhöhen. Für eine MySQL-Instanz, die mehrere verschiedene Web-Apps bedient (rohe PHP, WordPress, phpBB), möchten Sie wahrscheinlich einen Wert von mindestens 60 dafür haben.
Geben Sie diesen Befehl, und Sie werden herausfinden, wie viele globale Verbindungen, die Sie zur Verfügung haben:
show global variables like '%connections%'
Sie können zu einem bestimmten Zeitpunkt, wie dies herauszufinden, wie viele Verbindungen verwendet werden:
show status like '%connected%'
können Sie herausfinden, was jede Verbindung wie dies tut:
show full processlist
würde ich versuchen Sie für einen globalen Wert von mindestens 100 Verbindungen, wenn ich du wäre. Ihr Dienstanbieter sollte Ihnen helfen können, wenn Sie keinen Zugriff darauf haben. Es muss in der my.cnf
Dateikonfiguration für MySQL erfolgen. Setzen Sie es nicht zu hoch oder Sie riskieren, dass Ihr MySQL-Serverprozess all Ihren Arbeitsspeicher verschlingt.
Ein zweiter Ansatz ermöglicht Ihnen, diese Gesamtverbindungen Ihren verschiedenen MySQL-Benutzern zuzuordnen. Wenn Sie für jede Ihrer Web-Apps unterschiedliche MySQL-Benutzernamen haben, funktioniert dieser Ansatz für Sie. Dieser Ansatz wird hier beschrieben.https://www.percona.com/blog/2014/07/29/prevent-mysql-downtime-set-max_user_connections/
Der letzte Ansatz zur Beherrschung dieses Problems ist subtiler. Sie verwenden wahrscheinlich den Apache-Webserver als zugrunde liegende Technologie. Sie können reduzieren die Anzahl der Apache-Aufgaben zur gleichen Zeit zu laufen, paradoxerweise erhöhen Durchsatz. Das liegt daran, dass Apache Anfragen in die Warteschlange stellt. Wenn es ein paar Aufgaben gibt, die effizient durch die Warteschlange schlagen, ist das oft schneller als viele Aufgaben, weil weniger Konflikte auftreten. Es erfordert auch weniger MySQL-Verbindungen, die Ihr unmittelbares Problem lösen werden. Das wird hier erklärt: Restart Mysql automatically when ubuntu on EC2 micro instance kills it when running out of memory
Übrigens verwenden Web-Anwendungen wie WordPress einen persistenten Verbindungspool. Das heißt, sie stellen Verbindungen zur MySQL-Datenbank her, halten sie offen und verwenden sie wieder. Wenn Ihre Apps ausgelastet sind, sollte die Lebensdauer jeder Verbindung mehrere Minuten betragen.
Bitte versuchen Sie, ein wenig mehr Kontext zu geben, Sie haben uns nicht einmal gesagt, welche Sprache Sie arbeiten ... – Trufa
Hallo Trufa, Vielen Dank für die Überprüfung, aktualisiert :) –
Ich denke immer noch die Frage könnte Haben Sie ein wenig mehr Details, haben Sie versucht, Ihr Problem zu googlen? http://goo.gl/xW9Oe gibt es viele interessante Antworten, vielleicht kann man helfen. – Trufa