Problem:
In MySQL liefert <code>show processlistcode> sehr viele Verbindungen, obwohl momentan recht wenig auf dem Server los ist. Selbst Scripte die <code>mysql_close()code> aufrufen, lösen die Verbindung nicht auf.
Dies liegt an den 'persistenten Verbindungen' von PHP. Es ist eine deutliche Performance-Steigerung, wenn sich ein Script nicht jedesmal neu einloggen muß um eine Datenbankabfrage zu starten. PHP verwaltet die Connections intern und hält diese offen.
Oftmals kommt es vor, daß einige Verbindungen einfach nicht beendet werden, oder (z.B. auf vServern) der Speicher ausgeht oder MySQL irgendwann keine neue Verbindung herstellen will/kann.
Lösung:
Die Anzahl der persistenten Verbindungen kann man mit den Parametern <code>max_persistentcode> und <code>max_linkscode> regulieren. Wenn beide Werte auf <code>-1code> stehen, kann o.g. Problem auftauchen. Die passenden Werte muß man selbst anhand vom anfallenden Traffic/Hits ermitteln. Auf jedenfall muß <code>max_linkscode> deutlich höher sein als <code>max_persistentcode>. Sonst hat PHP keine Ausweichmöglichkeit mehr.