Forums Neueste Beiträge
 

PHP/mysql_connect() schlaegt fehl

20/03/2011 - 15:54 von Stefan+Usenet | Report spam
[X-Post ueber de.comp.lang.php, de.comp.datenbanken.mysql,
de.comm.software.webserver und de.comp.os.unix.linux.misc; Follow-up
bitte je nach Antwort setzen und ggf. auch schon in der Antwort
einzelne Gruppen herausnehmen - ich lese alle davon, nur weiss ich
momentan beim besten Willen nicht, in welche Richtung das gehen
wird]

Eine etwas aeltere PHP-Applikation, mit der MySQL-Extension
arbeitend, fliegt mir seit dem Update des Servers von Debian/Lenny
auf Debian/Squeeze (und damit von MySQL5.0 auf MySQL5.1, sowie von
PHP5.1 auf PHP5.3) gelegentlich um die Ohren. Bekannt ist dabei:

1) Unmittelbarer Ausloeser ist stets der PHP-Befehl mysql_connect(),
welcher fehlschlaegt. mysql_errno() enthaelt unmittelbar danach den
Wert 0, mysql_error() den leeren String.

2) an der Applikation selbst oder ihrer Konfiguration wurde seit dem
Debian-Update nichts geaendert; davor ist dieses Problem nicht ein
einziges Mal aufgetreten.

3) die Applikation laeuft stunden- und manchmal auch tagelang ohne
jedes Problem; sobald der Fehler einmal auftritt, haeuft er sich
jedoch massiv. Gefuehlt ist es so, als ob eines/einige der
Apache-Prozesse spinnen, waehrend die anderen korrekt weiterarbeiten.

4) Neustarten von (nur) apache behebt das Problem fuer den Moment,
was das Gefuehl aus 5) noch verstaerkt

5) aktiviere ich bei MySQL das Logging erhalte ich bei Auftreten des
Fehlers Zeilen der Form:

| 110320 15:34:09 87 Connect foo@localhost on
| 87 Quit

6) Das Problem tritt bislang nur (Murphy laesst gruessen) auf einem
Produktivserver auf. Auf den Test- und Entwicklungsmaschinen ist
derartiges bislang noch nicht vorgekommen (und das zieht sich nun
schon seit ueber 3 Wochen hin).

7) Das Problem ist voellig unabhaengig von der aktuellen Last, der
Tageszeit und der Anzahl der Zugriffe.

8) "mysql.allow_persistent = Off" in der php.ini

9) Apache laeuft in der Version 2.2.16 als apache2-mpm-prefork mit
| StartServers 5
| MinSpareServers 5
| MaxSpareServers 10
| MaxClients 150
| MaxRequestsPerChild 0


Die Hardware scheidet IMHO als Verursacher aus - das Problem ist
zwar bislang nicht gezielt ausloesbar, sieht dann aber immer exakt
gleich aus und betrifft immer die gleiche Programmstelle.

MySQL ist in meinen Augen wegen 4) unverdaechtig. Auch im Fehlerfall
werden die Anfragen der restlichen Apache-Prozesse korrekt
beantwortet, und Zugriff ueber die cli funktioniert jederzeit.

Der Apache ist allenfalls insofern verdaechtig, als einige, aber
nicht alle seiner Prozesse den Fehler ans Tageslicht bringen. Mir
faellt allerdings nichts ein, was auf dieser Ebene konfigurierbar
waere.

PHP bietet sich insofern an, als es Initiator der fehlschlagenden
Connects ist. Dagegen spricht allerdings, dass das Problem nicht
immer auftritt, sondern nur sporadisch.


Mit einem Cronjob, der den Webserver alle 10 Minuten neu startet und
MaxRequestsPerChild=5 kann die Lebensdauer des Problems momentan in
engeren Grenzen gehalten werden - aber das ist noch nicht einmal
kurzfristig eine akzeptable Loesung. Dass ausgerechnet und nur eine
Produktivmaschine davon betroffen ist, macht das Debugging
natuerlich auch nicht unbedingt einfacher. Momentan weiss ich aber
noch nicht einmal so recht, wo ich als naechstes nachsehen soll.

Fuer Ideen jedweder Art bin ich sehr dankbar...

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

überdimensional bleibt überdimensional: Stefan fuer alle Fàlle!
(Sloganizer)
 

Lesen sie die antworten

#1 info
20/03/2011 - 16:55 | Warnen spam
At 20 Mar 2011 14:54:28 GMT, Stefan+ (Stefan
Froehlich) wrote:

Produktivmaschine davon betroffen ist, macht das Debugging
natuerlich auch nicht unbedingt einfacher. Momentan weiss ich aber
noch nicht einmal so recht, wo ich als naechstes nachsehen soll.

Fuer Ideen jedweder Art bin ich sehr dankbar...



Hi Stefan

Falls noch nicht geschehen, moeglich und da von dir unerwaehnt: Schau
mal in die error.logs - auch auf die Eintraege davor und folgende. Bei
mir kommt danach meistens blitzartig die Erleuchtung ...

Franz-Josef

Dr. Franz-Josef Huecker
W3: http://www.huecker.com
Email:

Ähnliche fragen