[apache httpd.conf] MinSpareServers?? Max...

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

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01-2025

FvH

Aan het typen...

Topicstarter
Heb een servertje met debian sarge lopen, apache 1.3. Op die bak staan +/- 30 sites. Allemaal met kleine db's erachter (MySQL).

Nu merk ik dat de performance van de sites nogal toeneemt als ik MinSpareServers op 25 zet en MaxSpareServers op 50. Het geheugenverbruik gaat echter ook behoorlijk de lucht in. Betekend "spare" niet reserve??

StartServers staat op 15. Als ik ga checken zie ik normaal gesproken zo'n 30 / 35 apache processen lopen.

Hoe kan ik het geheugenverbruik omlaag krijgen zonder de performance v.d. sites teveel te beinvloeden?

Kan iemand goed uitleggen wat er precies wordt bedoeld met deze params?

Is er een formule voor aantal MinSpareServers etc. bij bijv. x aantal virtual hosts??

What are clouds made of? Linux servers mostly!


Verwijderd

Het lijkt mij logisch dat als jij startservers op 15 zet en je hebt minspareservers op 25 staan dat hij sowieso al 25 processen opstart. Met andere woorden volgens mij kan je net zo goed startservers op 25 zetten.

Daarnaast heb je 30 sites draaien en zet apache altijd een paar spareservers al op de achtergrond aan zodat gebruikers niet hoeven te wachten totdat apache ze opgestart heeft. Dus in mijn logica kloppen de 30-35 processen dan wel.

Wat is het probleem met zoveel processen ? Is het niet verstandig om iets meer geheugen in je bak te doen zodat apache gewoon wat meer werkruimte heeft ? :)

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01-2025

FvH

Aan het typen...

Topicstarter
bak heeft 1gb en sites zijn niet bijster interessant qua content. probleem is dat apache 500+ mb ram pakt... direct na start

What are clouds made of? Linux servers mostly!


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

FvH schreef op donderdag 12 mei 2005 @ 00:26:
bak heeft 1gb en sites zijn niet bijster interessant qua content. probleem is dat apache 500+ mb ram pakt... direct na start
Waar leid je dat uit af?

Overigens, beter dat het gebruikt wordt dan dat je 't voor niets gekocht hebt.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

CyBeR schreef op donderdag 12 mei 2005 @ 00:52:
[...]


Waar leid je dat uit af?

Overigens, beter dat het gebruikt wordt dan dat je 't voor niets gekocht hebt.
En die bak maar swappen zeker :?

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

BacardiBreezer schreef op donderdag 12 mei 2005 @ 00:53:
[...]


En die bak maar swappen zeker :?
Als er 1G mem inzit en apache gebruikt 500M (wat ik betwijfel trouwens) blijft er volgens mij nog zat over. En als je server veel loopt te swappen moet je er meer geheugen in proppen.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • BacardiBreezer
  • Registratie: September 2003
  • Laatst online: 19-06-2005

BacardiBreezer

Breezing Bacardi ?

CyBeR schreef op donderdag 12 mei 2005 @ 01:06:
[...]


Als er 1G mem inzit en apache gebruikt 500M (wat ik betwijfel trouwens) blijft er volgens mij nog zat over. En als je server veel loopt te swappen moet je er meer geheugen in proppen.
Ow sorry....... geheel mijn fout..... ik had het wel gelezen dat er 1GB in zat maar las jou post op de manier van;

Beter alles gebruiken dan niets........ dus in dat geval ging ik van 512 uit :)

Aan het geheugen kan het niet liggen igg.... Wel redelijk veel wat hij gebruikt opzich.

Jij bent misschien belangrijk, maar ik ben aardig ;)


  • Arnout
  • Registratie: December 2000
  • Laatst online: 10-02 17:38
30 sites zegt niet zo heel veel, het gaat erom hoeveel unieke bezoekers je hebt (per dag, per uur etc.).

Stel, dat zijn er 600 per uur, gemiddelde bezoekduur = 120 sec.
Ervan uitgaande dat de bezoeker met een standaard IE surft die max 2 connecties gebruikt.

600 per uur = 10 nieuwe bezoekers per minuut.
Op een willeurig tijdstip zijn er dus steeds 20 bezoekers tegelijk aanwezig.

20 bezoekers tegelijk nemen 40 connecties in beslag.

Elke apache child (in std. prefork mode) handelt 1 connectie af.

Je hebt dus een StartServers van 40 nodig.

Daarna kan je met MinSpareServers en MaxSpareServers spelen. MinSpareServers bepaalt het aantal childs wat idle moet zijn. Deze zou ik ook op 40 zetten. MaxSpareServers zou ik op 60 zetten zodat hij niet te snel childs killed.

En dan nog een belangrijke: MaxRequestsPerChild. Dit is het aantal requests dat een child mag afhandelen. Daarna wordt hij gekilled en wordt er afhankelijk van de drukte wel of geen nieuwe child aangemaakt. Dit is vooral van invloed op het geheugengebruik; als je applicaties memory leaks hebben is dit de manier om regelmatig een nieuwe child in te zetten zodat het geheugen weer vrijgegeven wordt. 200 vind ik een goede waarde. Is het beste a.d.h.v. de praktijk in te stellen.

Let op, het gegeven rekenvoorbeeld gaat uit van een constante load. Dit zal in de praktijk niet het geval zijn. Ook raad ik je aan met "ab" een flinke load te genereren om te controleren dat je server het wel aan kan (en niet gaat swappen, swappen is funest, vicieuze cirkel voor zoiets als een webserver).
Laatst is 1 van mijn webservers onderuit gehaald door een simpele ab -c 100 -n 10000 omdat ik te beroerd was geweest om ook maar 1 seconde naar de configuratie van de min max spare servers te kijken. Deze stond nog op default apache 2, dit zijn beroerde defaults!!! :P

edit: ik heb ongeveer een bovenstaande instelling voor mijn thuis server. Er zit 384MB geheugen in, wat ruim voldoende is (ik draai er ook nog allemaal zooi naast; dhcp, dns, samba, postfix, mysql), hij heeft nog nooit zitten swappen.

[ Voor 15% gewijzigd door Arnout op 12-05-2005 08:35 ]


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01-2025

FvH

Aan het typen...

Topicstarter
Ik heb wat zitten experimenteren met je rekenvoorbeeld etc. Rare is. In die bak zit 1GB ram, p4 3GHz en enige wat ie doet is apache en mysql draaien.

Hoeveelheid hits per dag (over alle sites samen) is zo'n 10000.

Volgens jouw rekenvoorbeeld zou dat dus (10000 / 24) / 60 +/- 7 hits per minuut constant.

* 4 voor de connecties en jij zegt startsrevers dus op ergens tussen 30 en 40.

Ik heb het geprobeerd, maar op een of andere manier loopt het geheugenverbruik echt uit de klauwen. Apache lijkt niet zoveel te slurpen, mysql ook niet en toch zie ik als ik die bak reboot na zo'n 6 uur ineens swap space in gebruik...

Tis dan wel 4kB, maar als ik nog eens een dag wacht is het meer.

Memory leak??

What are clouds made of? Linux servers mostly!


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Waarom vind je het zo erg dat er swap space in gebruik is? Dat is gewoon geheugen dat al een tijdje niet gebruikt is. Dan wordt 't weggeswapped zodat het echte geheugen gebruikt kan worden voor andere dingen zoals processen die het nodig hebben of (aannemelijk in dit geval) filesystem cache.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:54
Is er een performance probleem dat je uberhaupt naar geheugengebruik kijkt? Zo niet, why bother? Zo wel, weet je dan zeker dat het aan geheugengebruik ligt, en niet bv. aan inefficiente SQL-queries (wat bij webhosting van meerdere kleine sites vele malen waarschijnlijker is - dat soort sites is niet altijd even goed geprogrammeerd)?

Hoe weet je dat/waar kijk je om te zien dat Apache 500 MB geheugen gebruikt? Is dat de virtual memory size (dat zegt nl. eigenlijk niks) of fysiek gebruik dat Apache in gebruik heeft? Post eens de resultaten van een ps faxuww of top (niet alles posten natuurlijk, alleen de boeiende stukjes dan ;) ).

  • Hans
  • Registratie: Juni 1999
  • Niet online
al die child settings zijn in mindere mate interessant tegenwoordig aangezien apache dat allemaal zelf managed adhv de drukte op je webserver. De imo enige interessante zaken zijn MaxRequestsPerChild en KeepAlive. Keepalive wordt nml bij een bepaalde load meer een last dan een lust (zeker in een DNS round-robin of loadbalanced setup moet dat uit of keepalivetimeout heel laag), en maxrequestsperchild is met name interessant vanwege de al eerder genoemde memory leaks en brakke scripting/CGI zaken.

[ Voor 12% gewijzigd door Hans op 09-07-2005 20:15 ]


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01-2025

FvH

Aan het typen...

Topicstarter
Wilke schreef op zaterdag 09 juli 2005 @ 18:12:
Is er een performance probleem dat je uberhaupt naar geheugengebruik kijkt?
Geen performance problemen tot nu! Maar ik vind het gewoon iets minder prettig dat 1GB ram op een 3GHz P4 die slechts een paar sites served al zoveel memory vreet... Er staan een paar sites op die Mambo gebruiken (OpenSource CMS), maar ik kan me niet voorstellen dat dat nu zo'n grote memory load zou veroorzaken.
Hoe weet je dat/waar kijk je om te zien dat Apache 500 MB geheugen gebruikt? Is dat de virtual memory size (dat zegt nl. eigenlijk niks) of fysiek gebruik dat Apache in gebruik heeft? Post eens de resultaten van een ps faxuww of top (niet alles posten natuurlijk, alleen de boeiende stukjes dan ;) ).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root     20181  0.0  2.3 46328 21176 ?       S    Jul07   0:10 /usr/sbin/apache
www-data  4757  0.0  3.2 55432 29096 ?       S    Jul12   0:10  \_ /usr/sbin/apache
www-data  4760  0.0  3.1 55272 28956 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  4761  0.0  3.2 55724 29300 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  4762  0.0  3.1 55156 28620 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  4795  0.0  3.1 55336 28668 ?       S    Jul12   0:10  \_ /usr/sbin/apache
www-data  4796  0.0  3.2 55936 29636 ?       S    Jul12   0:13  \_ /usr/sbin/apache
www-data  4797  0.0  3.2 55372 29156 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  5205  0.0  3.1 55500 28944 ?       S    Jul12   0:09  \_ /usr/sbin/apache
www-data  6887  0.0  3.6 59888 33420 ?       S    Jul12   0:08  \_ /usr/sbin/apache
www-data  7445  0.0  3.1 55208 28832 ?       S    Jul12   0:06  \_ /usr/sbin/apache
www-data  7446  0.0  3.4 56416 30848 ?       S    Jul12   0:06  \_ /usr/sbin/apache
www-data  7447  0.0  3.1 55028 28420 ?       S    Jul12   0:06  \_ /usr/sbin/apache
www-data  7448  0.0  3.1 55152 28624 ?       S    Jul12   0:07  \_ /usr/sbin/apache
www-data  7449  0.0  3.1 54720 28324 ?       S    Jul12   0:05  \_ /usr/sbin/apache
www-data 14953  0.0  2.9 52812 27032 ?       S    00:44   0:00  \_ /usr/sbin/apache


Tel ik nu verkeerd als ik zeg dat dit bij elkaar iets onder de 50% is? En 50% van 1GB Ram is toch 500MB ;)

code:
1
2
root     17293  0.0  0.1  2316 1112 ?        S    Jul09   0:00 /bin/sh /usr/bin/mysqld_safe
mysql    17330  0.0  3.2 134700 29544 ?      S    Jul09   0:01  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock


MySQL verbruikt niet zo bijster veel... enige wat ik echt zie vreten is apache.

(edit: code-tagjes gezet voor leesbaarheid)

What are clouds made of? Linux servers mostly!


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

igmar

ISO20022

Hans schreef op zaterdag 09 juli 2005 @ 20:13:
maxrequestsperchild is met name interessant vanwege de al eerder genoemde memory leaks en brakke scripting/CGI zaken.
Op CGI is het niet van toepassing : Een child doet dan een exec() op de binary, en is die afgelopen is is d'r gewoon niks meer.

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

igmar

ISO20022

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root     20181  0.0  2.3 46328 21176 ?       S    Jul07   0:10 /usr/sbin/apache
www-data  4757  0.0  3.2 55432 29096 ?       S    Jul12   0:10  \_ /usr/sbin/apache
www-data  4760  0.0  3.1 55272 28956 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  4761  0.0  3.2 55724 29300 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  4762  0.0  3.1 55156 28620 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  4795  0.0  3.1 55336 28668 ?       S    Jul12   0:10  \_ /usr/sbin/apache
www-data  4796  0.0  3.2 55936 29636 ?       S    Jul12   0:13  \_ /usr/sbin/apache
www-data  4797  0.0  3.2 55372 29156 ?       S    Jul12   0:11  \_ /usr/sbin/apache
www-data  5205  0.0  3.1 55500 28944 ?       S    Jul12   0:09  \_ /usr/sbin/apache
www-data  6887  0.0  3.6 59888 33420 ?       S    Jul12   0:08  \_ /usr/sbin/apache
www-data  7445  0.0  3.1 55208 28832 ?       S    Jul12   0:06  \_ /usr/sbin/apache
www-data  7446  0.0  3.4 56416 30848 ?       S    Jul12   0:06  \_ /usr/sbin/apache
www-data  7447  0.0  3.1 55028 28420 ?       S    Jul12   0:06  \_ /usr/sbin/apache
www-data  7448  0.0  3.1 55152 28624 ?       S    Jul12   0:07  \_ /usr/sbin/apache
www-data  7449  0.0  3.1 54720 28324 ?       S    Jul12   0:05  \_ /usr/sbin/apache
www-data 14953  0.0  2.9 52812 27032 ?       S    00:44   0:00  \_ /usr/sbin/apache


Tel ik nu verkeerd als ik zeg dat dit bij elkaar iets onder de 50% is? En 50% van 1GB Ram is toch 500MB ;)
Waarbij al die processen een shared addresspace hebben, aangezien Linux een copy-on-write heeft. Dit zijn volledig normale getallen, en zolang het geen problemen geeft : Lekker zo laten draaien.
Pagina: 1