WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Apache äter upp allt minne (https://www.wn.se/forum/showthread.php?t=38181)

Magnus_A 2009-07-29 08:58

Hej,
har ett litet problem med Apache på en vps.
Apache har en obehaglig tendens att fylla upp allt minne tills det tar slut och servern dör. Det tar en halvtimme till ett par timmar, men sen är det kört.
Jag har 1 G på min vps, utan apache går det åt ca 500 MB till mail mm, och så fort jag startar apache så tuggar det långsamt i sig allt minne.
Det verkar som om en massa processer skapas och sedan somnar utan att avslutas, och då ligger de och blockerar minne.
jag kan gå från 70 till 300 processer sovande innan servern ger upp.
har mixtrat lite med apacheinställningarna utan egentlig framgång, tycker att den dokumentation som finns och de råd som ger handlar mest om prestanda och statiskt material istället för att minska minnesanvändningen.
En enkel lösning är naturligtvis att ta ner min tjänst och ersätta den med en lågupplöst bild på en söt katt, men det vill jag inte.
Har typ 2000 besök om dagen. Sidorna är tunga med mycket php och stora databaser.
Kör nu fastcgi istället för modphp utan att se någon större skillnad.
Prövade också med mpm-worker istället för prefork, men det sänkte servern på 10 minuter istället för en timme.

man tycker ju att minnet borde frigöras när besökaren fått sitt, eller har jag fel?

Har jag nått gränsen för vad en vps pallar med, måste jag uppgradera till egen server?

Alternativet är att starta om apache varje halvtimme i ett cronjob. :(

jimmie 2009-07-29 09:25

Det låter onekligen konstigt. Du behöver inte speciellt många processer för att serva dina besökare, hur ser din konfigurationsfil ut?

Kör du databas på samma server?

Jonas 2009-07-29 09:58

Vilka moduler har du inladdade i Apache?

Kod:

httpd -l
Kanske skall testa någon annan httpd? Nginx, Lighttpd mfl?

Magnus_A 2009-07-29 11:07

Tack för svar. Det är mycket moduler inlagda och det som står för lasten är det dynamiska materialet. Tyvärr är inte annat än apache ett alternativ.
Har nu trixat med fastcgi och lagt till
DefaultMinClassProcessCount 3
och
IdleTimeout 60

Det gjorde en klar förbättring, hoppas det inte skadar prestanda alltför mycket.
Övrig konfig av intresse i apache2:
StartServers 5
MinSpareServers 10
MaxSpareServers 20
MaxClients 30
MaxRequestsPerChild 100
KeepAliveTimeout 5
MaxKeepAliveRequests 100

modfastcgi:
MaxRequestsPerProcess 1000
# Maximum number of PHP processes
MaxProcessCount 15

DefaultMinClassProcessCount 3

# Number of seconds of idle time before a php-cgi process is terminated
IPCCommTimeout 360
IdleTimeout 60

jag kör också mysql på samma server men den drar inte tillnärmelsevis så mycket:
153M virt och 51M res enligt top, osäker på vad de olika egentligen betyder.
De stora minnesätarna förutom apache är spamassasin/amavis/clamd.
Men de är väluppfostrade nog att hålla sig på samma nivå hela tiden.


Alla tider är GMT +2. Klockan är nu 12:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson