Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql-Prozessliste gefüllt mit Sleep-Einträgen, die zu zu vielen Verbindungen führen?

Grundsätzlich erhalten Sie Verbindungen im Ruhezustand, wenn :

  • ein PHP-Skript stellt eine Verbindung zu MySQL her
  • einige Abfragen werden ausgeführt
  • Dann erledigt das PHP-Skript einige Dinge, die Zeit in Anspruch nehmen
    • ohne die DB zu trennen
  • und schließlich endet das PHP-Skript
    • was bedeutet, dass die Verbindung zum MySQL-Server getrennt wird

Daher landen Sie im Allgemeinen mit vielen Prozessen im Ruhezustand, wenn Sie viele PHP-Prozesse haben, die verbunden bleiben, ohne tatsächlich etwas auf der Datenbankseite zu tun.

Eine Grundidee also:Stellen Sie sicher, dass PHP-Prozesse nicht zu lange laufen - oder zwingen Sie sie, die Verbindung zu trennen, sobald sie nicht mehr auf die Datenbank zugreifen müssen.


Eine andere Sache, die ich oft sehe, wenn der Server ausgelastet ist:

  • Es gehen immer mehr Anfragen an Apache
    • was bedeutet, dass viele Seiten generiert werden müssen
  • Jedes PHP-Skript stellt, um eine Seite zu generieren, eine Verbindung zur DB her und führt einige Abfragen durch
  • Diese Abfragen nehmen mit zunehmender Belastung des DB-Servers immer mehr Zeit in Anspruch
  • Das bedeutet, dass sich immer mehr Prozesse stapeln

Eine Lösung, die dabei helfen kann, besteht darin, die Zeit zu verkürzen, die Ihre Abfragen benötigen, indem Sie die längsten optimieren.