[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Problem mit Content-Length im Header und Keep-Alive
Seite 1 von 1

Problem mit Content-Length im Header und Keep-Alive

Verfasst: 11. Aug 2013, 23:44
von sebastianp
Hallo!

Ich habe vor einiger Zeit schon festgestellt das auf meinem Server Redaxo unglaublich zäh läuft, da ich aber erst jetzt häufiger und intensiver mit Redaxo arbeite und die Entwicklungsgeschwindigkeit sehr wichtig ist habe ich das Problem genauer untersucht und wüsste nun gerne ob es sich tatsächlich um einen Fehler im Redaxo handeln kann.

Ich versuche einfach mal das hier so gut wie möglich aufzudröseln:

Symptom:
Sowohl im Front- als auch Backend brauchen Seiten ewig zu laden. Obwohl die PHP Skripte fehlerfrei laufen, und der Server keine nennenswerte Last hat.

Fehlersuche:
Betrachtet man die Ladezeiten der Seiten z.b. mit den Entwicklertools vom Chrome fällt auf, das die "Wartezeit" genau der Connection Keep-Alive Zeit entspricht die für den Webserver eingestellt ist. Der Webserver wartet also aus irgendeinem Grund mit dem fertigstellen der Seite bis der Timer abgelaufen ist. Meine erste Vermutung war das vieleicht ein schwerer Fehler im PHP einen der PHP Prozesse tötet und dadurch etwas hängen bleibt, dies konnte ich aber widerlegen, die Skripte laufen in jedem Fall durch. Allerdings habe ich herausgefunden das, wenn ein Skript einen Fehler enthält, dieses sofort lädt, ohne die Wartezeit.

Mögliche Diagnose:
Mit viel Hilfe von einem Bekannten habe ich das Problem weiter untersucht und wir glauben es jetzt soweit eingrenzen zu können das es eventuell am Redaxo selbst liegt. Und zwar ist im Header der Seiten jeweils "Content-Encoding: gzip" gesetzt sowie "Content-Length" mit einem bestimmten Wert. Dieser Wert ist allerdings nicht die Länge des gepackten Content sondern des unkomprimierten. Daher wartet der Browser auf weiteren Content obwohl der gepackte Inhalt schon längst komplett vorhanden ist und es kommt zum Timeout. Ein kurzes "grep -R Content-Length *" im Redaxo Ordner erweckt den Anschein als ob Redaxo die Content Länge selbst setzt (Daher auch das schnelle reagieren auf Skripte mit Fehlern, hier kommt Redaxo nicht dazu die Länge zu setzen und der Webserver übernimmt das).

Meine Frage ist nun: Klingt das soweit logisch? Ist das vieleicht ein bekanntes Problem und ich habe es nur nicht geschafft die Suche vernünftig zu benutzen? Kann man das schnell beheben?

Danke soweit! :)

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 12. Aug 2013, 00:03
von Xong
Hi,

das klingt für mich eher nach einem Server-Problem.

Redaxo setzt die Content-Length erst, nachdem der Inhalt komprimiert wurde: https://github.com/redaxo/redaxo4/blob/ ... c.php#L168

Welche Redaxo-Version verwendest du?
Ist in der master.inc.php $REX['USE_GZIP'] gesetzt?
Gibt es mit der gleichen Installation auf anderen Servern Probleme?

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 12. Aug 2013, 09:40
von sebastianp
Hi,

Da im Header der Seite immer gZip als Kompression angegeben war ging ich davon aus, das 'USE_GZIP' auch gesetzt war, allerdings war es das nicht ('false'). ??? Und, oh wunder, setze ich das auf 'true' klappt alles reibungslos. :/ Auf die Idee das es daran liegt war ich gar nicht gekommen...

Aber um die anderen Fragen noch zu beantworten:
- Redaxo Version 4.5
- Keine Probleme mit der gleichen Installation auf anderen Servern. Aber auch keine Probleme mit diversen anderen CMS System oder Blogsystemen auf dem gleichen Server.

Danke für die Hilfe :)

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 12. Aug 2013, 09:53
von Xong
Hi,

du solltest mal nachschauen, ob mod_deflate aktiviert und richtig konfiguriert ist. Irgendwo muss das Content-Encoding ja gesetzt werden.

Mich würde auch mal interessieren, ob eine einfache HTML-Datei komprimiert ausgegeben wird.

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 12. Aug 2013, 13:46
von sebastianp
Alle nicht-dynamischen Inhalte werden prompt ausgegeben, also ohne Verzögerung.

Wegen mod_deflate guck ich nachher mal.

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 12. Aug 2013, 16:02
von Xong
Hey!
sebastianp hat geschrieben:Alle nicht-dynamischen Inhalte werden prompt ausgegeben, also ohne Verzögerung.
Das war ja nicht die Frage. ;)

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 12. Aug 2013, 16:19
von jdlx
sebastianp hat geschrieben:Da im Header der Seite immer gZip als Kompression angegeben war ging ich davon aus, das 'USE_GZIP' auch gesetzt war, allerdings war es das nicht ('false'). ???
Sicher das dir da nicht irgendein .htaccess EIntrag reinspuckt?

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 13. Aug 2013, 01:01
von sebastianp
Habs nochmal gecheckt, keine .htaccess Dinge in der Nähe der Redaxo Installation.

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 13. Aug 2013, 01:05
von RexDude
ich hatte so eine verzögerung auch mal bei einem kunden auf seinem server gehabt. nach einschalten von USE_GZIP lief plötzlich alles korrekt.

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 13. Aug 2013, 04:41
von jdlx
sebastianp hat geschrieben:Habs nochmal gecheckt, keine .htaccess Dinge in der Nähe der Redaxo Installation.
Check mal den zlib.output_compression Wert deines Hostings..

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 13. Aug 2013, 08:43
von sebastianp
Also phpinfo() sagt mir folgendes:

zlib
ZLib Support enabled
Stream Wrapper compress.zlib://
Stream Filter zlib.inflate, zlib.deflate
Compiled Version 1.2.1.1
Linked Version 1.2.3.4

Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 13. Aug 2013, 10:30
von jdlx
Voodoo.. pack doch mal n php testfile <?php echo 'test';?> in root deiner rex Installation, ruf das auf und kuck was die header sagen..

Re: Problem mit Content-Length im Header und Keep-Alive

Verfasst: 13. Aug 2013, 11:08
von sebastianp
Request header

Code: Alles auswählen

GET /dev/voodoo.php HTTP/1.1
Host: spike.twisted-artwork.de
Connection: keep-alive
Cache-Control: max-age=0
Authorization: Basic ??????????????????????? (entfernt vom autor ;) )
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Response header

Code: Alles auswählen

HTTP/1.1 200 OK
Date: Tue, 13 Aug 2013 09:07:18 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.4.13-1~dotdeb.1
Vary: Accept-Encoding
Keep-Alive: timeout=3, max=100
Connection: Keep-Alive
Content-Length: 30
Content-Type: text/html
Content-Encoding: gzip

Ich hätte ja jetzt erwartet das es unkomprimiert ist .... 0o