[Debian] Load soms erg hoog.

Pagina: 1
Acties:

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:06

Snow_King

Konijn is stoer!

Topicstarter
Hallo,

Ik draai een webserver met Debian er op en zit met het volgende probleem.
Op die server draaien een aantal websites en soms stijgt de load als de ziekte.

Bij normaal gebruik (99% van de tijd) is de load 0.3 a 0.6, niets raars dus.

Maar soms stijgt de load wel naar 52.00, je begrijpt wel dat de webserver dan niet meer zo snel is.

De server doet alleen webservers, mail en sql wordt gedaan door andere servers.

/server-status wijst niets raars uit, er zijn niet ineens veel processen of requests zijn.

Aangezien de Apache onder www-data draait kan je niet gemakkelijk zien wat nu die hoge load veroorzaakt.

Apache killen en herstarten doet de trick gelukkig.

Ik wil dit dus tegen gaan, ik zoek iets wat die load stijging detecteerd en daar iets aan doet.

Nu heb ik in Apache al geklooid met de settings welke nu als volgt zijn.
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 150
Het gaat hier om een AMD XP2400+ met 1GB aan ram.

Dat zijn de enige relevante settings neem ik zo aan?

Wie heeft er wat tips om die Apache een beetje te tunen en dit tegen te gaan?

[ Voor 3% gewijzigd door Snow_King op 12-09-2004 22:50 ]


  • Wilke
  • Registratie: December 2000
  • Laatst online: 11:47
Een load van 0.3 tot 0.6 bij 'normaal gebruik' vind ik voor een webserver behoorlijk hoog eerlijk gezegd, niet dat het 'te veel' is maar meestal is het eerder tussen de 0.0 en 0.1 als je begrijpt wat ik bedoel :)

Om te tunen heb je altijd informatie nodig - anders zaten de 'betere' instellingen natuurlijk wel in de standaard configuratie ;)

Dus wat voor site draait er op, wat voor orde van grootte hits/dag moet ik aan denken? Gebruikt de site PHP, en zouden daar misschien pagina's bij kunnen zitten die niet al te handig geprogrammeerd zijn? Veel plaatjes/icons/dat soort dingen of niet? Relatief veel statisch, of alles dynamisch?

Kijk, als je site 100k hits/dag trekt dan kan ik me er iets bij voorstellen, maar als het gaat om 10-20k/dag (dat is zeg maar zo'n 10 per minuut gemiddeld) dan is er echt iets mis als je server dit doet..

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Als je inlogt met een SSH sessie naar je server; dan moet je via `top` wel kunnen zien wel proces die load trekt. Zie je hier 1 proces staan; of meerdere? Als je op dat moment je access en error logs tailt; zie je dan rare dingen voorbij komen?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 12:35

Kees

Serveradmin / BOFH / DoC
Bekijk je logs.

Daar staan ook process tijden in, eventueel kun je apache een klein beetje hacken zodat hij die tijden in ms geeft, maar de normale logs zouden je al een behoorlijke idee moeten geven.

Het belangrijkste is informatie, wat gaat er fout, wat duurt er lang. Daar moet je naar kijken

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:06

Snow_King

Konijn is stoer!

Topicstarter
Het is een webserver die meerdere websites draait (lees meer dan 200), dat gaat dus van PHP tot Perl tot gewoon plain html en plaatjes.

bij top zie ik meerdere processen, allemaal httpd welke zich bezig houden met de hoge load.

0.3 tot 0.6 is toch helemaal niet hoog voor een webserver?

  • __fred__
  • Registratie: November 2001
  • Laatst online: 17:55
Aangezien je zelf zegt dat het je httpd processen zijn, durf ik te wedden dat er maar twee opties zijn:

1) Er gaat iets fout in een script op één van de websites, waardoor deze begint te loopen en 100% CPU gaat gebruiken. Meerdere requests jagen dan de load heel snel naar hoge getallen.
2) Er is een i/o failure bij het lezen / schrijven van de harddisk en het proces slaat in een Diskwait. Elk proces dat in een diskwait toestand terecht komt voegt 1 punt toe aan je loadavarage. Moet je apache wel +50 processen mogen spawnen, en dat mag ie niet denk ik (max tien las ik net hierboven).

Via http://httpd.apache.org/docs/mod/mod_log_config.html#formats kun je bekijken hoe je de LogFormat en/of Customlog directives van apache zo in kunt stellen dat de tijd van serven gelogd wordt (%T uit mijn hoofd). Dan kun je ontdekken of er misschien steeds bij één script problemen komen.

Diskwaits staan gewoon in je ps of top output, kijk maar even met man welke letter in welke kolom precies,

[ Voor 3% gewijzigd door __fred__ op 13-09-2004 09:42 ]


  • Wilke
  • Registratie: December 2000
  • Laatst online: 11:47
Ahh, je doet dus hosting/colocation voor anderen?

Je zult echt specifieker moeten zijn in het geven van informatie, anders wordt het niks.

0.6 is behoorlijk hoog voor een webserver, zeker als dat de 'normale' load is en niet de piek. Het betekent (grofweg gezegd) dat het systeem gemiddeld 60% van de tijd bezig is met het afhandelen van alle requests. Als je dan een piek hebt die 10 keer zo hoog is (niet ongebruikelijk - stel dat er vanaf een drukke site naar die van jou wordt gelinkt, bv.) zit de load dus minstens op 6 - en waarschijnlijk nog veel hoger doordat alles dan gaat blocken op I/O. Zo zou het misschien kunnen komen, maar het is waarschijnlijker dat er gewoon enkele zeer brak geprogrammeerde (PHP/Perl) pagina's tussen zitten.

Je zult echt moeten uitvogelen welke dat zijn en daar dan iets aan doen.

  • jep
  • Registratie: November 2000
  • Laatst online: 16-02 17:05

jep

Je kunt in top pids zien van httpd processen die veel cpu power gebruiken, als je deze even in server-status opzoekt kun je wel eens wat tegen komen. :) Je moet wel snel zijn, tenzij het een script is dat een tijdje blijft hangen. Die kun je wel opsporen op die manier.

  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Je kan met 'top' en 'vmstat 1' ook nog kijken of je swap niet volloopt, misschien dat je kernel constant aan het pagen is als er door een script veel geheugen gevraagd wordt waardoor je load omhoog schiet. Ook zou het gewoon kunnen zijn dat er slechte scripts draaien die niet termineren, waardoor je met >50 draaiende processen blijft zitten.

Remember, if you have any trouble you can always send a telegram to the Right People.


  • Snow_King
  • Registratie: April 2001
  • Laatst online: 15:06

Snow_King

Konijn is stoer!

Topicstarter
Ik denk dat ik eens ga kijken naar RLimitCPU en RLimitMem, zo ga ik elke vhost denk ik een CPU limiet opleggen om dit soort grapjes te verbieden.

Als ik top doe is de CPU steeds 80 tot 99% idle, dat valt best mee denk ik zo.

Ik verdenk ook een zeer brakke PHP of Perl code van het kwaad.
Pagina: 1