SuSE 9.1: PHP lahmt beim Endspurt
Hallo Leute, ein ärgerliches Problem hat mich wieder eingeholt - nur diesmal auf einem Webserver und nicht "nur" auf meinem Heim-PC :-( Folgendes: Auf einer SuSE 9.1 mit zugehörigem Apache2 [1] macht PHP eine Denkpause, bevor es den letzten Abschnitt einer Webseite rausrückt. Ein Großteil der Seite wird normal schnell geladen und angezeigt, dann folgen ca. 20 Sekunden Pause und erst anschließend rückt PHP den Rest der Seite raus. Wer es sich selbst angucken will: http://www.cboltz.de oder http://www.landjugend-insheim.de (und nicht wundern, trotz scheinbar statischer URLs läuft alles über PHP.) Man achte darauf, wie lange der Browser anzeigt, dass noch an der Seite geladen wird. Zum Vergleich kann man z. B. ein Bild aus der Galerie laden, das geht normal schnell. Der Apache selbst ist also OK. Wer weiß, wie man dieses Problem beheben kann? Die Androhung von Fußtritten hat leider nicht geholfen ;-) [2] Log- und/oder Configfiles auf Anfrage. Gruß Christian Boltz PS: Da bisher erst 2 Domains auf den Server umgezogen sind, kann ich ggf. mal ein paar Tests fahren. [1] Wer es ganz genau wissen will: das Ganze läuft auf einem frisch angemieteten Rootserver L [3] bei 1&1. Ich glaube aber kaum, dass es an der Hardware hängt - auf meinem Laptop hatte ich das Problem nämlich bei der 9.1 auch schon. "Lösung" war damals ein Update auf die 9.2, aber auf dem Server will ich das nicht machen ;-) [2] Was auch daran liegen kann, dass heute im Raum Karlsruhe scheinbar ein wichtiger Router (etliche Seiten nicht erreichbar) sowie zeitweise auch DSL ausgefallen war. Und von Daheim (Insheim) hatte ich mit Freenet per Modem ebenfalls größere Probleme. Mit dem geschilderten Problem hat das allerdings nichts zu tun, dieses trat auch bei noch intakter Leitung auf. [3] Ich habe dann auch gleich beschlossen, die Domainverwaltung per Hand in /etc/apache2/vhosts.d/ zu machen, da Plesk in diesem Punkt definitiv unbrauchbar ist :-( --
Microsoft-Compatible Spongiforme Encephalitis? Setzt das nicht Hirn voraus? Irgendwo müssen doch all die Beschwörungsformeln hin, die man als MCSE auswendig lernen muß. Ein schwammförmiges Gehirn scheint mir dafür durchaus geeignet ... [Aran Kuntze, Gerhard Schromm und Martin Bienwald in dasr]
On Fri, Feb 18, 2005 at 10:15:11PM +0100, Christian Boltz wrote:
Ein Großteil der Seite wird normal schnell geladen und angezeigt, dann folgen ca. 20 Sekunden Pause und erst anschließend rückt PHP den Rest der Seite raus.
Hier (SuSE 9.2 KDE 3.3.2 Konqi) laeuft's in einem durch. Keine Pausen oder Haenger. Direkt nach "waiting for reply" taucht "page loaded" auf. Schau mal mit Ethereal, welcher Teil der Antwort wartet. Proxy / Browser mit Pipelining aktiv? -- Peter
Christian Boltz tat kund:
Hallo Leute,
Hallo Christian und Liste,
ein ärgerliches Problem hat mich wieder eingeholt - nur diesmal auf einem Webserver und nicht "nur" auf meinem Heim-PC :-(
Folgendes: Auf einer SuSE 9.1 mit zugehörigem Apache2 [1] macht PHP eine Denkpause, bevor es den letzten Abschnitt einer Webseite rausrückt. Ein Großteil der Seite wird normal schnell geladen und angezeigt, dann folgen ca. 20 Sekunden Pause und erst anschließend rückt PHP den Rest der Seite raus.
Wer es sich selbst angucken will: http://www.cboltz.de oder http://www.landjugend-insheim.de (und nicht wundern, trotz scheinbar statischer URLs läuft alles über PHP.) Man achte darauf, wie lange der Browser anzeigt, dass noch an der Seite geladen wird.
Zum Vergleich kann man z. B. ein Bild aus der Galerie laden, das geht normal schnell. Der Apache selbst ist also OK.
Wer weiß, wie man dieses Problem beheben kann? Die Androhung von Fußtritten hat leider nicht geholfen ;-) [2] Log- und/oder Configfiles auf Anfrage.
also hier[1] kann ich dein Problem nicht wirklich reproduzieren. Emotional würde ich die Ladezeiten zwischen 0,x-3[2] Sekunden einschätzen. Könnte es vielleicht an der lokalen (?) DNS- Auflösung liegen? [1] SuSE9.2 mit Standard- KDE und DSL- Anschluss [2] die Bildersammlung von der Meisterfeier. HTH, George
Christian Boltz schrieb:
Hallo Leute,
ein ärgerliches Problem hat mich wieder eingeholt - nur diesmal auf einem Webserver und nicht "nur" auf meinem Heim-PC :-(
Folgendes: Auf einer SuSE 9.1 mit zugehörigem Apache2 [1] macht PHP eine Denkpause, bevor es den letzten Abschnitt einer Webseite rausrückt. Ein Großteil der Seite wird normal schnell geladen und angezeigt, dann folgen ca. 20 Sekunden Pause und erst anschließend rückt PHP den Rest der Seite raus.
Wer es sich selbst angucken will: http://www.cboltz.de oder http://www.landjugend-insheim.de (und nicht wundern, trotz scheinbar statischer URLs läuft alles über PHP.) Man achte darauf, wie lange der Browser anzeigt, dass noch an der Seite geladen wird. Heute war alles OK - weniger als 1s Ladezeit ...
Ansonsten kann sich dahinter alles mögliche verbergen: Netzwerkprobleme (Proxy, DNS, etc.), eine angeknackste Platte (die erst einige retries braucht, um einen Block zu lesen etc.) ... Tritt der Hänger auch bei lokalem Zugriff auf ( z.B. time wget http://localhost/...) ?
Hallo Rainer, hallo Leute, Am Samstag, 19. Februar 2005 11:54 schrieb Rainer Kaluscha:
Christian Boltz schrieb:
Folgendes: Auf einer SuSE 9.1 mit zugehörigem Apache2 [1] macht PHP eine Denkpause, bevor es den letzten Abschnitt einer Webseite rausrückt. Ein Großteil der Seite wird normal schnell geladen und angezeigt, dann folgen ca. 20 Sekunden Pause und erst anschließend rückt PHP den Rest der Seite raus.
Wer es sich selbst angucken will: http://www.cboltz.de
Heute war alles OK - weniger als 1s Ladezeit ...
Ansonsten kann sich dahinter alles mögliche verbergen: Netzwerkprobleme (Proxy, DNS, etc.),
DNS würde ich ausschließen, da ich vor längerer Zeit das Problem auch mit meinem lokalen Apache auf SuSE 9.1 (mit Einträgen in /etc/hosts) hatte. Der Proxy war ein gutes Stichwort: # time wget http://www.cboltz.de/de/linux/bash/sl1 [...] real 0m15.362s <--- genau das meinte ich user 0m0.004s sys 0m0.002s # unset http_proxy ; unset HTTP_PROXY # time wget http://www.cboltz.de/de/linux/bash/sl2 [...] real 0m2.157s <---- besser :-) user 0m0.003s sys 0m0.004s Mein wwwoffle ist also eindeutig (Mit-) Verursacher des Problems, wie man an den real-Zeiten klar erkennen kann. Die Zeiten mit/ohne wwwoffle sind klar reproduzierbar (jeweils mit leicht geänderter URL getestet, damit Caching ausgeschlossen ist.) Was mir gerade eingefallen ist und mich in diesem Zusammenhang etwas wundert: IIRC hat unter 9.1 auf meinem Laptop ein Apache-Update (!) auf die Version in projects/ das Problem behoben. Apache ist also wohl doch nicht unschuldig. Außerdem tritt das Problem nur bei PHP-Seiten auf, nicht aber bei statischem HTML (kann wwwoffle das auseinanderhalten?) Ich vermute also, dass doch irgendeine Einstellung (oder Bugfix?) in Apache oder PHP mit im Spiel ist. Ideen? BTW: Ich habe gerade mal mit suse-linux-faq.koehntopp.de/search.php getestet (der Server läuft auch mit 9.1) - die ist mit und ohne wwwoffle gleich schnell erreichbar.
eine angeknackste Platte (die erst einige retries braucht, um einen Block zu lesen etc.) ...
Dass bei einem neuen Server _und_ bei einem recht neuen Laptop jeweils die Platte einen Macken hat und denselben Fehler verursacht, wäre schon Murphy ;-) Gruß Christian Boltz, keine Zufallssig (wenn wir es schon mal von Murphy haben... ;-) -- randomlink against caching is now murphyproof. [Ratti in fontlinge-cvs]
On Sun, Feb 20, 2005 at 02:02:53AM +0100, Christian Boltz wrote:
DNS würde ich ausschließen, da ich vor längerer Zeit das Problem auch mit meinem lokalen Apache auf SuSE 9.1 (mit Einträgen in /etc/hosts) hatte.
Der Proxy war ein gutes Stichwort:
# time wget http://www.cboltz.de/de/linux/bash/sl1 [...] real 0m15.362s <--- genau das meinte ich user 0m0.004s sys 0m0.002s
# unset http_proxy ; unset HTTP_PROXY
# time wget http://www.cboltz.de/de/linux/bash/sl2 [...] real 0m2.157s <---- besser :-) user 0m0.003s sys 0m0.004s
Mein wwwoffle ist also eindeutig (Mit-) Verursacher des Problems, wie man an den real-Zeiten klar erkennen kann. Die Zeiten mit/ohne wwwoffle sind klar reproduzierbar (jeweils mit leicht geänderter URL getestet, damit Caching ausgeschlossen ist.)
Was mir gerade eingefallen ist und mich in diesem Zusammenhang etwas wundert: IIRC hat unter 9.1 auf meinem Laptop ein Apache-Update (!) auf die Version in projects/ das Problem behoben.
Wenn das wo waere, muesste ein (testweiser) Downgrade das Problem wieder zum Vorschein bringen. Wenn das so ist, koennte man bei der Gelegenheit koennte man die Header untersuchen (zB fehlende Content-length Kopfzeile), zum spaeteren Vergleich mit dem funktionierenden Setup.
Apache ist also wohl doch nicht unschuldig. Außerdem tritt das Problem nur bei PHP-Seiten auf, nicht aber bei statischem HTML (kann wwwoffle das auseinanderhalten?) Ich vermute also, dass doch irgendeine Einstellung (oder Bugfix?) in Apache oder PHP mit im Spiel ist. Ideen?
Im Moment keine konkrete Idee, aber ich vermute eine wwwoffle-Eigenheit, dass er in einer bestimmten Konstellation nicht klarkommt, weil ich noch nie von einem derartigen Problem mit Apache/PHP gehoert habe. Peter -- the tasty cardinal imitated the big can of spam
Hallo Peter, hallo Leute, (sorry für die Pause, aber ich war zu sehr mit der 9.3 beta beschäftigt ;-) Am Sonntag, 20. Februar 2005 12:26 schrieb poeml@cmdline.net:
On Sun, Feb 20, 2005 at 02:02:53AM +0100, Christian Boltz wrote:
# time wget http://www.cboltz.de/de/linux/bash/sl1 real 0m15.362s <--- genau das meinte ich # unset http_proxy ; unset HTTP_PROXY # time wget http://www.cboltz.de/de/linux/bash/sl2 real 0m2.157s <---- besser :-)
Mein wwwoffle ist also eindeutig (Mit-) Verursacher des Problems, [...] Was mir gerade eingefallen ist und mich in diesem Zusammenhang etwas wundert: IIRC hat unter 9.1 auf meinem Laptop ein Apache-Update (!) auf die Version in projects/ das Problem behoben.
Wenn das wo waere, muesste ein (testweiser) Downgrade das Problem wieder zum Vorschein bringen.
Das sagt sich so leicht ;-) Inzwischen findest Du bei mir daheim keine 9.1 mehr, da ich auf 9.2 bzw. auf der Testpartition auf 9.3 beta upgedated habe. Nur auf dem Server (Rootserver bei 1&1, SuSE 9.1) taucht das Problem weiterhin auf. Allerdings möchte ich da möglichst nicht den Apache austauschen, da inzwischen etliche Domains drauf laufen und ich YOU-Updates gegenüber manuellen Updates bevorzuge ;-)
Wenn das so ist, koennte man bei der Gelegenheit koennte man die Header untersuchen (zB fehlende Content-length Kopfzeile), zum spaeteren Vergleich mit dem funktionierenden Setup.
So, ich habe mal mit ethereal den Datenverkehr auf eth0 [1] mitgeschnitten. Der Hinweis "Content-length Header" war gut, PHP von SuSE 9.1 schickt keinen solchen mit (egal ob mit oder ohne wwwoffle). Zum Vergleich habe ich mal den lokalen Apache belauscht (9.3 beta) - dieser schickt Content-Length mit und verursacht auch keine Pause. Leider bin ich im Auswerten von Netzwerkpaketen nicht sonderlich geübt. Ich stelle die Mitschnitte mal auf meine Homepage: http://www.cboltz.de/tmp/ Dateien: mit-wwwoffle.ethereal: Zugriff auf den Server _mit_ wwwoffle (und Pause) ohne-wwwoffle.ethereal: Zugriff auf den Server _ohne_ wwwoffle lokal-ohne-wwwoffle.ethereal: lokaler Zugriff als Vergleichsmöglichkeit Die Dateien können mit Ethereal geöffnet und angezeigt werden.
Ich vermute also, dass doch irgendeine Einstellung (oder Bugfix?) in Apache oder PHP mit im Spiel ist. Ideen?
Im Moment keine konkrete Idee, aber ich vermute eine wwwoffle-Eigenheit, dass er in einer bestimmten Konstellation nicht klarkommt, weil ich noch nie von einem derartigen Problem mit Apache/PHP gehoert habe.
Helfen meine obigen Infos weiter? Die wwwoffe-Version scheint übrigens egal zu sein, da sich das Problem von SuSE 9.1 bis zur aktuellen Beta gehalten hat. Meine wwwoffle- Konfiguration scheint auch keine Rolle zu spielen, da es auch mit der Original-Configdatei zum beschriebenen Problem kommt. Irgendeine Idee, wie ich das Problem beheben könnte? Gruß Christian Boltz [1] Setup hier: - Laptop (10.12.80.30) mit 9.3 beta, lokaler wwwoffle - Server (10.12.80.99, als Router verwendet) mit 9.0, Einwahl per Modem Der Webserver (SuSE 9.1) ist http://www.cboltz.de/de/ Um Caching bei Tests zu vermeiden, kannst Du hinter /de/ einen beliebigen Text anhängen, das stört nicht weiter ;-) --
Weil es sehr weit verbreitet ist, eingespielt und "überall drauf". Die weite Verbreitung ist allenfalls geeignet, die kaputte Syntax auszugleichen, ein Erfordernis also, kein Pluspunkt. [> Ratti und Thorsten Haude in suse-linux zur Frage "Warum procmail?"]
On Sun, Mar 20, 2005 at 11:05:46PM +0100, Christian Boltz wrote:
Am Sonntag, 20. Februar 2005 12:26 schrieb poeml@cmdline.net:
On Sun, Feb 20, 2005 at 02:02:53AM +0100, Christian Boltz wrote:
# time wget http://www.cboltz.de/de/linux/bash/sl1 real 0m15.362s <--- genau das meinte ich # unset http_proxy ; unset HTTP_PROXY # time wget http://www.cboltz.de/de/linux/bash/sl2 real 0m2.157s <---- besser :-)
Mein wwwoffle ist also eindeutig (Mit-) Verursacher des Problems, [...] Was mir gerade eingefallen ist und mich in diesem Zusammenhang etwas wundert: IIRC hat unter 9.1 auf meinem Laptop ein Apache-Update (!) auf die Version in projects/ das Problem behoben.
Wenn das wo waere, muesste ein (testweiser) Downgrade das Problem wieder zum Vorschein bringen.
Das sagt sich so leicht ;-) Inzwischen findest Du bei mir daheim keine 9.1 mehr, da ich auf 9.2 bzw. auf der Testpartition auf 9.3 beta upgedated habe.
Nur auf dem Server (Rootserver bei 1&1, SuSE 9.1) taucht das Problem weiterhin auf. Allerdings möchte ich da möglichst nicht den Apache austauschen, da inzwischen etliche Domains drauf laufen und ich YOU-Updates gegenüber manuellen Updates bevorzuge ;-)
Wenn das so ist, koennte man bei der Gelegenheit koennte man die Header untersuchen (zB fehlende Content-length Kopfzeile), zum spaeteren Vergleich mit dem funktionierenden Setup.
So, ich habe mal mit ethereal den Datenverkehr auf eth0 [1] mitgeschnitten.
Der Hinweis "Content-length Header" war gut, PHP von SuSE 9.1 schickt keinen solchen mit (egal ob mit oder ohne wwwoffle).
Zum Vergleich habe ich mal den lokalen Apache belauscht (9.3 beta) - dieser schickt Content-Length mit und verursacht auch keine Pause.
Leider bin ich im Auswerten von Netzwerkpaketen nicht sonderlich geübt. Ich stelle die Mitschnitte mal auf meine Homepage: http://www.cboltz.de/tmp/
Dateien: mit-wwwoffle.ethereal: Zugriff auf den Server _mit_ wwwoffle (und Pause) ohne-wwwoffle.ethereal: Zugriff auf den Server _ohne_ wwwoffle lokal-ohne-wwwoffle.ethereal: lokaler Zugriff als Vergleichsmöglichkeit
Da sehe ich aber noch ein paar andere signifikante Unterschiede: In ohne-wwwoffle.ethereal macht wget einen HTTP/1.0 Request mit Keep-Alive. In mit-wwwoffle.ethereal macht wwwoffle einen HTTP/1.1 Request mit Connection: close und TE: chunked. Der Server antwortet in beiden Faellen --ohne Content-Length Header-- mit dem ersten Teil der Antwort. Trotzdem haengt nur wwwoffle, waehrend wget nicht haengt. Eventuell kommt wwwoffle mit dem chunked transfer-encoding nicht klar (das er als HTTP/1.1 Client beherrschen muesste). Siehe RFC 2068 Abschnitt 3.6: [...] The chunked encoding modifies the body of a message in order to transfer it as a series of chunks, each with its own size indicator, followed by an optional footer containing entity-header fields. This allows dynamically-produced content to be transferred along with the information necessary for the recipient to verify that it has received the full message. [...] Chunked encoding und Content-length Header schliessen sich uebrigens aus, es ist also richtig dass kein Content-length vorhanden ist. Mir faellt noch auf, dass die HTTP-Antwort des Servers quasi zweimal im Tracefile ist, da gibt es ein paar Retransmission -- ist das reproduzierbar? Wenn ja, koennte es auf ein MTU-Problem hindeuten... Peter -- the big cardinal imitated the tasty machine that goes "ping"
Hallo Peter, hallo Leute, Am Mittwoch, 23. März 2005 13:54 schrieb poeml@cmdline.net:
On Sun, Mar 20, 2005 at 11:05:46PM +0100, Christian Boltz wrote:
Am Sonntag, 20. Februar 2005 12:26 schrieb poeml@cmdline.net:
On Sun, Feb 20, 2005 at 02:02:53AM +0100, Christian Boltz wrote:
# time wget http://www.cboltz.de/de/linux/bash/sl1 real 0m15.362s <--- genau das meinte ich # unset http_proxy ; unset HTTP_PROXY # time wget http://www.cboltz.de/de/linux/bash/sl2 real 0m2.157s <---- besser :-)
Mein wwwoffle ist also eindeutig (Mit-) Verursacher des Problems, [...] Was mir gerade eingefallen ist und mich in diesem Zusammenhang etwas wundert: IIRC hat unter 9.1 auf meinem Laptop ein Apache-Update (!) auf die Version in projects/ das Problem behoben. [...] Wenn das so ist, koennte man bei der Gelegenheit koennte man die Header untersuchen (zB fehlende Content-length Kopfzeile), zum spaeteren Vergleich mit dem funktionierenden Setup.
So, ich habe mal mit ethereal den Datenverkehr auf eth0 [1] mitgeschnitten.
Der Hinweis "Content-length Header" war gut, PHP von SuSE 9.1 schickt keinen solchen mit (egal ob mit oder ohne wwwoffle).
Zum Vergleich habe ich mal den lokalen Apache belauscht (9.3 beta) - dieser schickt Content-Length mit und verursacht auch keine Pause.
Da sehe ich aber noch ein paar andere signifikante Unterschiede:
In ohne-wwwoffle.ethereal macht wget einen HTTP/1.0 Request mit Keep-Alive.
In mit-wwwoffle.ethereal macht wwwoffle einen HTTP/1.1 Request mit Connection: close und TE: chunked.
OK, das liegt an wget. Mit HTTP/1.1-Clients (z. B. Konqueror) taucht das Problem genauso auf.
Der Server antwortet in beiden Faellen --ohne Content-Length Header-- mit dem ersten Teil der Antwort.
Trotzdem haengt nur wwwoffle, waehrend wget nicht haengt.
Eventuell kommt wwwoffle mit dem chunked transfer-encoding nicht klar (das er als HTTP/1.1 Client beherrschen muesste). [...] Chunked encoding und Content-length Header schliessen sich uebrigens aus, es ist also richtig dass kein Content-length vorhanden ist.
OK.
Mir faellt noch auf, dass die HTTP-Antwort des Servers quasi zweimal im Tracefile ist, da gibt es ein paar Retransmission -- ist das reproduzierbar? Wenn ja, koennte es auf ein MTU-Problem hindeuten...
Würde mich eher wundern, wenn es mit der MTU zu tun hat, da das Problem - unter 9.1 auch mit _lokalem_ Apache (ebenfalls mit zwischengeschaltetem wwwoffle) aufgetreten ist - in 3 verschiedenen Netzwerken auftritt, nämlich bei mir (SuSE 9.0 als Router, Modem), bei einem Bekannten (SuSE 8.1 (IIRC) als Router, DSL) sowie @nebenjob ("Hardware"-Router, DSL) Ich packe mal einen neuen Netzwerk-Mitschnitt auf http://www.cboltz.de/tmp/ - mit-wwwoffle-konqueror_auch-lo.ethereal ist ein Seitenabruf mit Konqueror (HTTP/1.1, um diesen Unterschied zu eliminieren). Diesmal habe ich auch das lo-Interface belauscht, um auch den Datenverkehr zwischen Browser und wwwoffle mitzubekommen. Interessant finde ich, dass die komplette HTML-Datei innerhalb von 1,1s bei wwwoffle ankommt (bis Paket 24), dann aber 15s braucht, um auch beim Browser zu landen. Irgendeine Erklärung für dieses Verhalten? Gruß Christian Boltz -- Planung ist der Ersatz des Zufalls durch den Irrtum.
participants (5)
-
Christian Boltz
-
Georg Schilling
-
Peter Wiersig
-
poeml@cmdline.net
-
Rainer Kaluscha