[Apache] server reached MaxClients setting

Pagina: 1
Acties:
  • 463 views sinds 30-01-2008
  • Reageer

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 04-02 21:50

Erhnam

het Hardware-Hondje :]

Topicstarter
Door de populariteit van een van mijn websites heb ik een enorm aantal extra bezoekers gekregen. Deze zorgen echter voor veel problemen. Na wat zoek werk kom ik de volgende regels tegen in mijn error_log:

[Wed Jun 01 22:22:06 2005] [error] server reached MaxClients setting, consider raising the MaxClients setting

Na wat google werk kwam ik er achter dat dit opgelost kan worden door de MaxClients te verhogen. Deze staat nu ingesteld op 256 maar toch blijft het probleem terug keren. Andere gebruikers adviseerde de MaxRequestsPerChild te veranderen van 0 naar een hoge waarde. Echter zitten hier ook risico's aan verbonden. Mijn vraag hoe doen jullie dit? Wat zijn goede settings en welk advies kan ik volgen?

http://www.xbmcfreak.nl/


  • SyS_ErroR
  • Registratie: Juni 2002
  • Laatst online: 17:53
Als je je MaxClients te laag staat word de website idd traag, omdat er pas een querie verzonden kan worden op t moment dat een Client (ookwel bekend als Worker klaar is)..

Een te hoog aantal Workers vreet RAM geheugen, te laag een te trage website....

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

256 is inderdaad de maximale setting voor een Apache 1.3 of Apache 2 prefork setup.
Zet eens de /server-stats aan(staat ergens in de configfile van apache), dan kun je prima zien hoe druk je server het heeft.

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 04-02 21:50

Erhnam

het Hardware-Hondje :]

Topicstarter
moto-moi schreef op woensdag 01 juni 2005 @ 23:12:
256 is inderdaad de maximale setting voor een Apache 1.3 of Apache 2 prefork setup.
Zet eens de /server-stats aan(staat ergens in de configfile van apache), dan kun je prima zien hoe druk je server het heeft.
De stats optie heb ik helaas nergens kunnen vinden. Als de server vast loopt dan wordt zelfs ssh echt super traag.. Letter voor letter zie ik dan de tekens op het scherm verschijnen. Is er niet een optie om de child processen die niets meer doen er uit te gooien?

http://www.xbmcfreak.nl/


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 18:31

DataGhost

iPL dev

als ssh ook traag wordt zou ik zeggen dat of de verbinding vol zit of de hardware van je server het niet meer trekt, waardoor de client queue lekker vol loopt en je tegen je max van 256 clients aanloopt :) hij kan de requests namelijk niet optijd afhandelen en geeft geen slot vrij voodat een request is afgehandeld...
wat zijn de specs van je server en heb je een parsetime scriptje ofzo op je webpagina's staan? (kan je zien hoe lang het duurt om een pagina op te bouwen dus)

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 04-02 21:50

Erhnam

het Hardware-Hondje :]

Topicstarter
Hij loopt echt supersnel vol. Na een reboot en enkele minuten later:

/etc/init.d/httpd status
httpd (pid 5073 5072 5071 5070 5069 5068 5067 5065 5064 5063 5062 5061 5060 5059 5058 5057 5056 5055 5054 5053 5052 5051 5050 5049 5048 5034 5033 5032 5031 5030 5029 5028 5027 5026 5025 5024 5023 5022 5021 5019 5018 5010 5009 5008 5007 5006 5004 5003 5002 4998 4997 4995 4994 4991 4990 4988 4953 4952 4951 4950 4949 4947 4946 4945 4944 4943 4942 4941 4940 4939 4938 4937 4936 4935 4934 4933 4932 4930 4929 4928 4927 4926 4925 4924 4923 4922 4921 4908 4907 4905 4904 4903 4902 4901 4900 4899 4898 4897 4896 4895 4894 4893 4892 4883 4882 4881 4880 4879 4878 4877 4876 4871 4870 4869 4868 4865 4864 4861 4824 4823 4822 4821 4820 4819 4818 4817 4816 4815 4814 4813 4812 4811 4810 4809 4808 4807 4806 4805 4804 4803 4802 4801 4800 4799 4798 4797 4796 4795 4794 4793 4778 4777 4776 4774 4773 4772 4771 4770 4769 4768 4767 4766 4765 4764 4763 4762 4752 4751 4750 4749 4748 4747 4746 4745 4737 4735 4734 4733 4730 4729 4727 4694 4693 4692 4691 4690 4689 4688 4687 4686 4685 4684 4683 4682 4681 4680 4679 4678 4677 4676 4675 4674 4673 4672 4671 4670 4669 4668 4667 4666 4665 4664 4663 4648 4647 4646 4645 4644 4643 4642 4641 4639 4638 4637 4636 4635 4634 4633 4632 4624 4623 4622 4621 4620 4618 4617 4616 4611 4609 4608 4607 4604 4603 4601 4587 4586 4585 4444 4076 4075 4074 4073 4072 4071 4070 4069 4068 3974) is running...


Hardware moet voldoende zijn: Pentium 4 3 Ghz met 1024MB geheugen:

Dit zijn mijn httpd.conf settings:
De MaxClients heb ik al verhoogd van 100 naar 256 maar dat is alleen maar wat langer uitstel. De machine heeft maanden lang prima gedraaid alleen nu een van de websites het bijzonder goed doet (60.000 hits per dag) zie ik deze melding.

KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 256
MaxRequestsPerChild 1000
</IfModule>

<IfModule worker.c>
StartServers 2
MaxClients 256
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
</IfModule>

[ Voor 7% gewijzigd door Erhnam op 02-06-2005 07:47 ]

http://www.xbmcfreak.nl/


  • Arnout
  • Registratie: December 2000
  • Laatst online: 31-01 16:29
Als SSH ook traag wordt lijkt de verbinding vol te lopen. SSH wordt zelden traag van een hogere load.

Wat ik denk: doordat maxclients bereikt wordt, wordt de website vanuit user oogpunt als "traag" ervaren. Wat gaan gebruikers dan doen: of ze kappen ermee, of ze openen meerdere windows om toch de content binnen te krijgen. Hangt sterk af van de content die aangeboden wordt.
Dus dat zou misschien de traagheid van de verbinding verklaren.
Misschien moet je eens kijken naar een multi threaded config van apache 2.

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 04-02 21:50

Erhnam

het Hardware-Hondje :]

Topicstarter
De traagheid is inmiddels gefixed. Na het handmatig killen en weer opstarten van apache en bepaalde zaken loopt alles weer soepel. Het is dus niet zo zeer een hardware issue. De meldingen blijven echter wel steeds terug komen. Wat zou ik kunnen veranderen aan de config file om dit op te lossen? Het lijkt er op dat er child processen niet worden afgesloten en zo apache vol loopt.

http://www.xbmcfreak.nl/


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 04-02 21:50

Erhnam

het Hardware-Hondje :]

Topicstarter
Heb de limit weten te verhogen door ServerLimit toe te voegen aan de config. Hij ziet er nu zo uit:

ServerLimit 500

<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 500
MaxRequestsPerChild 1000
</IfModule>

<IfModule worker.c>
StartServers 2
MaxClients 500
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
</IfModule>


Ik zal afwachten of dit wel een goed resultaat geeft!

http://www.xbmcfreak.nl/


  • judgem
  • Registratie: December 2001
  • Laatst online: 28-04-2014

judgem

Lord of Metal

* judgem blaast het stof van dit topic af en geeft hem een schop omhoog

Ik ondervind dus hetzelfde probleem als de topicstarter echter verschijnt de melding bij mij al binnen een paar seconden na het restarten van Apache. Ik heb al geexperimenteerd met diverse waardes maar zonder resultaat. De laatste configuratie van de vorige poster was succelvol in de zin dat het nu een minuut duurde voor ik dit weer in mijn error.log kreeg:

[Thu Oct 19 15:22:00 2006] [notice] Apache/2.0.55 (Ubuntu) PHP/5.1.2 configured -- resuming normal operations
[Thu Oct 19 15:22:58 2006] [error] server reached MaxClients setting, consider raising the MaxClients setting

:(

Als er iemand suggesties heeft dan hoor ik dat graag want mijn website (die van de harde waren uit mijn signature) moet als de bliksem weer de lucht in. U bent bij voorbaat bedankt.

- Ik bespreek ook harde waren en dan wel op www.lordsofmetal.nl - en ik draai en programmeer ze in DYNAMO


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 19:10
Aan je sig te zien gebruik je joomla, een nogal zwaar PHP forum. Je kunt het een en ander nog rekken door een PHP accelerator te installeren zoals eAccelerator. Als je dit doet, zet dan wel de cache compressie uit, die kost alleen maar performance, je gaat mij nml niet vertellen dat je volledige website in gecompileerde vorm niet in 16MB geheugen past.

Wat dit te maken heeft met maxclients: hoe eerder een request is afgehandeld, hoe eerder de volgende afgehandeld kan worden, wat ervoor zorgt dat er minder requests tegelijk open blijven staan.

Uiteindelijk is het alleen symptoombestrijding wat je doet. De echte oplossing is met het worker/thread model van apache 2.x te gaan werken, echter is PHP dan weer niet threadsafe. Een methode om hieromheen te werken is het gebruik van iets als fastcgi of mod_fcgid, maar volgens de documentatie van eAccelerator werkt dat niet samen met die cache module (het heeft geen zin om shared memory caches te gebruiken als je 20 losse geisoleerde PHP processen tegelijk hebt draaien :X)

Op dit moment heb ik een webserver draaien met Apache 2.0 en de prefork module met PHP als module erin, deze handelt met eAccelerator eigenlijk alleen de PHP requests af. De echte load van die website zit in het serveren van foto's vanuit de twee squid frontend caches en de crappy scripts die een dual-dualcore opteron met 8GB geheugen waar de hele database inpast naar 100% CPU gebruik kunnen krijgen, de webserver zelf zal het niet zijn.

  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

judgem schreef op donderdag 19 oktober 2006 @ 15:28:Als er iemand suggesties heeft dan hoor ik dat graag want mijn website (die van de harde waren uit mijn signature) moet als de bliksem weer de lucht in. U bent bij voorbaat bedankt.
En je hebt naam ik aan, zoals in de documentatie staat, ServerLimit ook verhoogd ?

  • judgem
  • Registratie: December 2001
  • Laatst online: 28-04-2014

judgem

Lord of Metal

_JGC_ schreef op vrijdag 20 oktober 2006 @ 00:12:
Aan je sig te zien gebruik je joomla, een nogal zwaar PHP forum.
Nee, het was die andere en die is nu dus even tijdelijk overleden. Dank voor de verdieping in elk geval :)
Je kunt het een en ander nog rekken door een PHP accelerator te installeren zoals eAccelerator. Als je dit doet, zet dan wel de cache compressie uit, die kost alleen maar performance, je gaat mij nml niet vertellen dat je volledige website in gecompileerde vorm niet in 16MB geheugen past.

Wat dit te maken heeft met maxclients: hoe eerder een request is afgehandeld, hoe eerder de volgende afgehandeld kan worden, wat ervoor zorgt dat er minder requests tegelijk open blijven staan.

Uiteindelijk is het alleen symptoombestrijding wat je doet. De echte oplossing is met het worker/thread model van apache 2.x te gaan werken, echter is PHP dan weer niet threadsafe. Een methode om hieromheen te werken is het gebruik van iets als fastcgi of mod_fcgid, maar volgens de documentatie van eAccelerator werkt dat niet samen met die cache module (het heeft geen zin om shared memory caches te gebruiken als je 20 losse geisoleerde PHP processen tegelijk hebt draaien :X)

Op dit moment heb ik een webserver draaien met Apache 2.0 en de prefork module met PHP als module erin, deze handelt met eAccelerator eigenlijk alleen de PHP requests af. De echte load van die website zit in het serveren van foto's vanuit de twee squid frontend caches en de crappy scripts die een dual-dualcore opteron met 8GB geheugen waar de hele database inpast naar 100% CPU gebruik kunnen krijgen, de webserver zelf zal het niet zijn.
Dank voor de tips. Die ga ik zeker eens tegen het licht houden maar daartoe moet ik denk ik alweer een stap verder zijn namelijk die Apacheserver die niet om de minuut eruit klapt vanwege het eerder genoemde euvel.
igmar schreef op vrijdag 20 oktober 2006 @ 14:14:
[...]


En je hebt naam ik aan, zoals in de documentatie staat, ServerLimit ook verhoogd ?
Ja dat heb ik gedaan. Het enige voordeel wat daarmee behaald werd, was dat Apache er sindsdien een dikke minuut over deed om weer eruit te klappen in plaats van de 10 seconden voorheen.

Iemand anders nog een idee wellicht? Ik ga vanavond naar het datacenter. Wie weet kan ik het dan ook oplossen.

- Ik bespreek ook harde waren en dan wel op www.lordsofmetal.nl - en ik draai en programmeer ze in DYNAMO


  • Robert
  • Registratie: Juni 2000
  • Laatst online: 04-02 13:20

Robert

You have your answer..

edit:
@hieronder: ja inderdaad te snel geweest had de schop niet gezien :o
Toch belangrijk: keepalive laag zetten (staat bij apache standaard op 15 en dat is een killer voor je maxclients). Gooi die dus naar b.v. 4 of lager

Ik zou de volgende waardes ook minimaal verdubbelen:

StartServers 8
MinSpareServers 5
MaxSpareServers 20

[ Voor 255% gewijzigd door Robert op 22-10-2006 17:54 ]

Just 'cause I'm paranoid doesn't mean they're not after me | The only operating system that does what you want: LFS


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 19:10
@Robert: waar zie jij een keepalive? Die staat uit in de originele TS, in de config van de vervolgposter zou ik het zo niet weten.

Overigens is het wel aan te raden om de keepalive settings dusdanig te tunen dat je clients niet te lang aan je server blijven hangen. Een timeout van een paar seconden is al hoog genoeg om nog profijt te hebben van keepalive, maak je het hoger, dan heb je er alleen maar nadeel van, aangezien er dan onnodig connecties opengehouden worden.

Die eAccelerator tip is zeker nuttig om dit probleem op te lossen: hoe sneller je scripts verwerkt zijn, hoe eerder je client de zooi binnen heeft, en hoe eerder een volgende client weer een connectie kan openen.

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Vreemd dat het nog niet genoemd is (toch?), maar je kunt die MaxClients-limiet van 256 simpel verhogen door Apache even te recompilen met een andere waarde in een header-file (httpd.h?).

Zorg er uiteraard wel voor dat je systeem dat aantal clients aankan..
Pagina: 1