phpbar.de logo

Mailinglisten-Archive

Mysql: Too many connections

Mysql: Too many connections

Björn Schotte mysql-de_(at)_lists.bttr.org
Wed, 3 Apr 2002 18:35:13 +0200


* Stefan Hofmeir wrote:
> seit letzter Stunde bekomme ich von meiner mysql-Datenbank
> (mysql 3.23.30-gamma) nur noch die Fehlermeldung

Du hast doch auf der iw-tec Liste schon Antworten bekommen,
wieso fragst du hier noch mal?

Meine Antwort aus iw-tec:

mysql_pconnect(). Weil mysql_pconnect() nur für Persistenz
innerhalb eines Apache-Prozess für jeweils ein einziges
Verbindungsparameter-Tripel (DB - Host, User, Passwort)
sorgt.

Ein Apache (ich gehe davon aus, dass Apache zum Einsatz
kommt) ist ein forkender Webserver, in der Regel hast du
also X "stehende" Apache-Prozesse, die auf eine Connection
warten:

apache (Mutterprozess)
\
 \-- apache child 1
 |
 |
 \-- apache child
 |
 |
 \-- apache child
 |
 .
 .
 .


Jeder dieser Prozesse arbeitet einen Request ab. Kommt
zum Zeitpunkt X ein Request an Child 1 für index.php an
und index.php öffnet mit mysql_pconnect() eine für diesen
Apache Child persistente Verbindung. Kommt zum Zeitpunkt
X+Y ein weiterer Request an das gleiche Child mit gleichem
mysql_pconnect()-DB-Verbindungstripel, so kann die Verbindung
zu MySQL, die noch steht, benutzt werden.

Landet der Request dagegen bei einem der anderen Childs,
so wird eine neue Verbindung zu MySQL aufgemacht.

Irgendwann hast du dann so viele Apache-Prozesse, die jeder
für sich eine MySQL-Verbindung offen halten, dass die Anzahl
der MySQL-Verbindungen zuviel ist.

Abhilfe: auf mysql_connect() umstellen oder ein Tool wie
SRM (http://www.vl-srm.net/) einsetzen, das echtes Connection-
Pooling kann. Das Problem ist nicht auf PHP zurückzuführen,
sondern auf die Art und Weise, wie Apache gemacht ist.

-- 
PHP-Support * realitätsnahe Performance-Messungen mit Code-Analyse
    Webapplikationsentwicklung * PHP-Schulungen * Consulting
    
             0700-THINKPHP -*- bjoern_(at)_thinkphp.de

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive