Portál AbcLinuxu, 14. května 2025 02:42

Dotaz: Apache bez zjevné příčiny zaplní RAM i swap

4.4.2009 19:35 Oswald | skóre: 1
Apache bez zjevné příčiny zaplní RAM i swap
Přečteno: 450×
Odpovědět | Admin
Příloha:
Ahoj, mám server, kde je Fedora 10 a httpd 2.2.11-2. Server má 2 Gb RAM. Občas se stane to, že apache zaplní celou pamět i swap. V terminálu pak vidím chyby, které jsou na screenshotu v příloze, v error_log je hláška "server reached MaxClients setting, consider raising the MaxClients setting". Při reloadu apache loguje toto "child process 8680 still did not exit, sending a SIGKILL" - asi pro každý server.

Zvláštní na tom je, že se to neděje jenom v momentech, kdy apache zpracovává hodně requestů, ale i v období relativního klidu (tj. ve statusu vidim např. "8 requests currently being processed"). Jako MPM se používá prefork, jehož nastavení vypadá takto:
<IfModule prefork.c>
StartServers       30
MinSpareServers    5
MaxSpareServers   10
ServerLimit      100
MaxClients       100
MaxRequestsPerChild  4000
</IfModule>
ServerLimit a MaxClients jsem ted radsi snížil na 50, ale přijde mi, že ani těch 100 není moc. Celé to na mě působí tak, že apache v určitém momentě přestane likvidovat nepoužité servery a tím dojde k tomu zaplnění paměti. Workaround, který mě napadá, je pomocí cronu kontrolovat load a v momentě, kdy překročí určitou hranici, apache reloadnout, protože tak se ta pamět okamžitě zase uvolní, ale raději bych to vyřešil nějak systemově.

Nesetkal jste se s tímto problémem někdo? Budu vděčný za jakýkoliv hint. Díky

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

AraxoN avatar 4.4.2009 19:48 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Apache bez zjevné příčiny zaplní RAM i swap
Odpovědět | | Sbalit | Link | Blokovat | Admin

Negeneruje ten apache dynamické stránky napísane tak, že zožerú veľa pamäte?

4.4.2009 19:55 Oswald | skóre: 1
Rozbalit Rozbalit vše Re: Apache bez zjevné příčiny zaplní RAM i swap
Ano, většina stránek je generována pomocí PHP a je tam celkem dost dotazů do MySQL databáze, ale jak jsem již naznačil výše, ten problém nastává i v momentech, kdy je návštěvnost čtvrtinová oproti špičce, ve které je obvykle zaplněno jenom něco přes polovinu RAM.
4.4.2009 20:39 python
Rozbalit Rozbalit vše Re: Apache bez zjevné příčiny zaplní RAM i swap
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdar, zkus nastavit nizsi MaxReqPerChild, napr. na 100. Podprocesy budou driv umirat a nestihnou se tolik nafouknout do pameti.
5.4.2009 00:34 Oswald | skóre: 1
Rozbalit Rozbalit vše Re: Apache bez zjevné příčiny zaplní RAM i swap
Díky za tip, tuhle directivu jsem doted vicemene prehlizel, a co jsem tak koukal, tak se obecne doporucuje to nastavit na nizsi hodnotu kvulim moznym leakum. Snizil jsem to a uvidim, co to udela.
5.4.2009 00:27 dino
Rozbalit Rozbalit vše Re: Apache bez zjevné příčiny zaplní RAM i swap
Odpovědět | | Sbalit | Link | Blokovat | Admin

Holt Cesty Fedory su nevyspitatelne.

Mal som Fedoru a mal som tie iste problemy.  Skus sa este pohrat s direktivou KeepAlive v httpd.conf. Mne to pomohlo.

5.4.2009 00:41 Oswald | skóre: 1
Rozbalit Rozbalit vše Re: Apache bez zjevné příčiny zaplní RAM i swap
KeepAlive mam nasteveno takhle:
MaxKeepAliveRequests 500
KeepAliveTimeout 5
Rekl bych, ze tady je dulezity ten timeout, ktery mam pomerne nizky, takze si myslim, ze timhle to nejspis nebude.

Jinak ja mam Fedoru na serveru rad, mam ji tam uz nekolik let a tohle jsou vlastne prvni vetsi problemy, ktery zazivam. Navic to ani s distribuci nemusi mit nic spolecnyho.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.