You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by nl <nl...@feder-software.de> on 2007/04/16 13:55:44 UTC
Performanceproblem: Wartezeiten auf Server mit geringer Auslastung
Hallo,
ich verwalte eine Reihe von LAMP-Servern, auf denen von Zeit zu Zeit
Seiten recht lange brauchen um zu laden (ca. 10-20 Sekunden, gegenüber
ca. 1-2 Sekunden normalerweise). Welche Seiten das sind und wann der
Effekt auftritt hängt nicht vom Load auf dem Server ab, allerdings sind
die Wartezeiten länger, wenn der Load höher ist.
Das Ladeverhalten sieht so aus, dass ein bisschen geladen wird, dann
bleibt alles stehen und irgendwann geht es weiter ("stop and go").
Durch mitloggen einer Session mit snort, konnte ich feststellen, dass
die Verzögerung auf jeden Fall im Apache selbst stattfindet: Jeweils
nach einem GET (PHP-Seite), kommt zunächst die Antwort des Apache noch
schnell, ebenso die Quittung vom Client. Danach gibt es eine Wartezeit
von mehreren Sekunden. Bei Wiederholung einer Anfrage tritt der Effekt
nie auf (Browsercache gelöscht). Merkwürdig ist, dass die Wartezeit
recht genau dem aktuell eingestellten "keepalive" Wert entspricht
(könnte aber Zufall sein).
Um DNS als Ursache auszuschliessen habe ich einen lokalen Caching-only
Nameserver eingerichtet, der hat aber ohnehin wenig zu tun. mysql ist in
dieser Zeit ebenfalls gut und schnell ansprechbar.
Hat jemand Ideen, wie man herausbekommt, worauf der Apache da wartet?
Gruß
Neven Luetic
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Performanceproblem: Wartezeiten auf Server mit geringer
Auslastung
Posted by nl bei Feder <nl...@feder-software.de>.
> > Mittlerweile kann ich das Verhalten erzeugen: Wenn ich in einer Sitzung
> > bestimmte Seiten mit umfangreichen Aktionen auf der DB aufrufe, dann
> > bleibt bei einem zusätzlichen Loginversuch - auf eine andere DB! - das
> > Loginfenster so lange stehen, wie das läuft. Quasi ein
> > Singleusersystem.
>
> Was für eine DB, mit welchen Scripts?
mysql 5 mit PHP 4 und apache 2.2. Auf dem betreffenden Server liegen ca.
8 größere DBs. Die Applikation ist ein Buchungssystem, bei dem es
durchaus auch einmal Belastungsspitzen durch umfangreiche Joins von
mehreren Clients gleichzeitig geben kann. In dem beschriebenen Fall
haben allerdings, wie gesagt, sowohl Apache als auch mysql wenig zu
tun.
>
> > strace verrät mir, dass der Prozess in einem "flock"-Aufruf wartet. Da
> > in den PHP-Skripten kein flock verwendet wird, muss das wohl von der DB
> > kommen. Aber wie kann das bei unterschiedlichen DBs sein? Oder es werden
> > irgendwelche Limits überschritten?
>
> Eventuell passt das hier:
> http://forum.de.selfhtml.org/archiv/2006/1/t122524/#m788073
>
> Gibt es für deine Scripte noch Abhängigkeiten (wie zum Beispiel php4-mysql
> oder ähnlich), die du noch installieren solltest?
Das ganze läuft schon seit letzten Herbst. Die Spur mit dem flock ist zu
allgemein - s.o. Ich werde das PHP-Loginskript mit Timeraufrufen
versehen, um feststellen zu können, was da getan wird. Vorläufig scheint
es doch kein Apacheproblem zu sein.
Vielen Dank erst mal
Nevem
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Performanceproblem: Wartezeiten auf Server mit geringer Auslastung
Posted by Paul Puschmann <ln...@uzulabs.net>.
On Tue, Apr 17, 2007 at 12:38:19AM +0200, nl wrote:
> Hallo,
>
> > Das restliche System läuft aber stabil? Ansonsten würde ich in
> > Richtung Filesystem / DMA tippen.
>
> Ansonsten ist alles unproblematisch. Den höchsten Ressourcenverbrauch
> hat mysql und das läuft gut.
>
> > > Um DNS als Ursache auszuschliessen habe ich einen lokalen Caching-only
> > > Nameserver eingerichtet, der hat aber ohnehin wenig zu tun. mysql ist in
> > > dieser Zeit ebenfalls gut und schnell ansprechbar.
> >
> > Wie wäre es wenn du den DNS-Lookup ganz ausschaltest?
>
> Das hatte ich im Apache eh schon. Es finden halt beim Verbindungsaufbau
> einige wenige lookups statt.
Okay.
> Mittlerweile kann ich das Verhalten erzeugen: Wenn ich in einer Sitzung
> bestimmte Seiten mit umfangreichen Aktionen auf der DB aufrufe, dann
> bleibt bei einem zusätzlichen Loginversuch - auf eine andere DB! - das
> Loginfenster so lange stehen, wie das läuft. Quasi ein
> Singleusersystem.
Was für eine DB, mit welchen Scripts?
> strace verrät mir, dass der Prozess in einem "flock"-Aufruf wartet. Da
> in den PHP-Skripten kein flock verwendet wird, muss das wohl von der DB
> kommen. Aber wie kann das bei unterschiedlichen DBs sein? Oder es werden
> irgendwelche Limits überschritten?
Eventuell passt das hier:
http://forum.de.selfhtml.org/archiv/2006/1/t122524/#m788073
Gibt es für deine Scripte noch Abhängigkeiten (wie zum Beispiel php4-mysql
oder ähnlich), die du noch installieren solltest?
Paul
--
: Bitte einen Realname benutzen, unter dem Zitat antworten
: und einfache Text-Mails senden (kein HTML).
: Danke.
Re: Performanceproblem: Wartezeiten auf Server mit geringer
Auslastung
Posted by nl <nl...@feder-software.de>.
Hallo,
> Das restliche System läuft aber stabil? Ansonsten würde ich in
> Richtung Filesystem / DMA tippen.
Ansonsten ist alles unproblematisch. Den höchsten Ressourcenverbrauch
hat mysql und das läuft gut.
> > Um DNS als Ursache auszuschliessen habe ich einen lokalen Caching-only
> > Nameserver eingerichtet, der hat aber ohnehin wenig zu tun. mysql ist in
> > dieser Zeit ebenfalls gut und schnell ansprechbar.
>
> Wie wäre es wenn du den DNS-Lookup ganz ausschaltest?
Das hatte ich im Apache eh schon. Es finden halt beim Verbindungsaufbau
einige wenige lookups statt.
Mittlerweile kann ich das Verhalten erzeugen: Wenn ich in einer Sitzung
bestimmte Seiten mit umfangreichen Aktionen auf der DB aufrufe, dann
bleibt bei einem zusätzlichen Loginversuch - auf eine andere DB! - das
Loginfenster so lange stehen, wie das läuft. Quasi ein
Singleusersystem.
strace verrät mir, dass der Prozess in einem "flock"-Aufruf wartet. Da
in den PHP-Skripten kein flock verwendet wird, muss das wohl von der DB
kommen. Aber wie kann das bei unterschiedlichen DBs sein? Oder es werden
irgendwelche Limits überschritten?
Neven
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Performanceproblem: Wartezeiten auf Server mit geringer Auslastung
Posted by Paul Puschmann <ln...@uzulabs.net>.
On Mon, Apr 16, 2007 at 01:55:44PM +0200, nl wrote:
> Hallo,
>
> ich verwalte eine Reihe von LAMP-Servern, auf denen von Zeit zu Zeit
> Seiten recht lange brauchen um zu laden (ca. 10-20 Sekunden, gegenüber
> ca. 1-2 Sekunden normalerweise). Welche Seiten das sind und wann der
> Effekt auftritt hängt nicht vom Load auf dem Server ab, allerdings sind
> die Wartezeiten länger, wenn der Load höher ist.
>
> Das Ladeverhalten sieht so aus, dass ein bisschen geladen wird, dann
> bleibt alles stehen und irgendwann geht es weiter ("stop and go").
Das restliche System läuft aber stabil? Ansonsten würde ich in
Richtung Filesystem / DMA tippen.
> Durch mitloggen einer Session mit snort, konnte ich feststellen, dass
> die Verzögerung auf jeden Fall im Apache selbst stattfindet: Jeweils
> nach einem GET (PHP-Seite), kommt zunächst die Antwort des Apache noch
> schnell, ebenso die Quittung vom Client. Danach gibt es eine Wartezeit
> von mehreren Sekunden. Bei Wiederholung einer Anfrage tritt der Effekt
> nie auf (Browsercache gelöscht). Merkwürdig ist, dass die Wartezeit
> recht genau dem aktuell eingestellten "keepalive" Wert entspricht
> (könnte aber Zufall sein).
>
> Um DNS als Ursache auszuschliessen habe ich einen lokalen Caching-only
> Nameserver eingerichtet, der hat aber ohnehin wenig zu tun. mysql ist in
> dieser Zeit ebenfalls gut und schnell ansprechbar.
Wie wäre es wenn du den DNS-Lookup ganz ausschaltest?
Paul
--
: Bitte einen Realname benutzen, unter dem Zitat antworten
: und einfache Text-Mails senden (kein HTML).
: Danke.
Re: Performanceproblem: Wartezeiten auf Server mit geringer
Auslastung
Posted by nl <nl...@feder-software.de>.
> > Hat jemand Ideen, wie man herausbekommt, worauf der Apache da wartet?
>
> strace?
Leider tritt das Problem bevorzugt beim Aufruf der Loginseite selbst
auf, wenn vorher noch keine Verbindung da war und man nicht weiß,
welcher Apacheprozess den Client bedienen wird. Oder kann man das
eingrenzen?
Ansonsten muss ich dann wohl versuchen, darauf zu setzen, dass sich das
wiederholt nachdem man weiß, welche Prozesse beteiligt sind.
Gruß
Neven
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------
Re: Performanceproblem: Wartezeiten auf Server mit geringer Auslastung
Posted by Rainer Sokoll <R....@intershop.de>.
On Mon, Apr 16, 2007 at 01:55:44PM +0200, nl wrote:
> Hat jemand Ideen, wie man herausbekommt, worauf der Apache da wartet?
strace?
Rainer
--------------------------------------------------------------------------
Apache HTTP Server Mailing List "users-de"
unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------