Apache/php/mysql und mysql_qconnect auf Windows-Server macht Probleme

Neels

New Member
Hallo Leute,

ich betreibe ein Forum mit 1300 Mitgliedern (ca 30-50 Leute zu Stoßzeiten gleichzeitig online) und wundere mich, warum ich laut MySQLAdmin mehr MySQL-Verbindungen habe als Leute online sind.

Das Forum verbindet über mysql_pconnect, das sollte doch eigentlich heissen, dass für alle User eine Verbindung benutzt wird, oder irre ich? Leider werden die Verbindungen auch nie wieder geschlossen, manche Threads haben eine Idle-Zeit (jetzt gerade) von über 20 Minuten.

Hat jemand nen Tipp?

apache 2.2.4 / PHP 5.2.0 / MySQL 4.1.22 / Windows Server 2003

Gruß,

Nils
 
Hallo,

was für eine Foren Software nutzt Du?

Die Programmierung bestimmt u.a. wieviele Verbindungen offen sind.
Grüße
Sinepp
 
Hallo,

vielen Dank für Deine Antwort. Ich nutze das Simplemachines Forum in der aktuellen Version 1.1.1. So wie ich die PHP-Dokumentation verstehe, müsste php *immer* eine bereits vorhandene Verbindung zurückliefern, sofern eine existiert. Daher wundert es mich, dass die Forensoftware da die Finger drin haben könnte.

Gruß,

Nils
 
Es gibt 2 Gründe:
1.) Du mußt bedenkten, daß jeder Abruf in der Datenbank eine Connection braucht. Wenn ein vorhergehender Query noch nicht abgeschlossen ist (z.B. weil der Programmierer sequentiell (mit "Cursor") durch die Recordsets geht und in der Zwischenzeit neue Queries stellt, brauchen die Neuen eine andere Connection.
Es ist also wirklich eine Frage der Programmierung, wie viele Connections ein Script benötigt.

2.) mod_php ist nicht Thread-Safe. D.h. ein Apache-Child kann eine Connection nicht an einen anderen Apache-Child abtreten. Wenn also ein Child einmal das Script verarbeitet hat, hält dies seine Connections bis zum Tod. Wenn Du also 30 Childs hast, die jeder mal dieses Script verarbeitet haben, sind mind. 30 Connections offen, auch wenn zu einem späteren Zeitpunkt nur 5 Childs die Arbeit verrichten.

huschi.
 
Back
Top