Apache server reached maxclients setting

 ( neutrino | 2014. március 17., hétfő - 10:07 )

Üdv,

Tegnap este lehalt az egyik webszerverem, gyakorlatilag elérhetetlen volt. Ránéztem a virtuális gép terminál ablakára, ahol arra panaszkodott, hogy elfogyott a memória. Loginolni nem tudtam, kapott egy resetet. Miután újraindult elkezdtem nézegetni a logokat, a syslogban olyan bejegyzéseket találtam, mely szerint az apache ette meg az összes ramot és a swapet is. Apache error.logban az alábbi üzenetet találtam:

server reached MaxClients setting, consider raising the MaxClients setting

apache2.conf vonatkozó része:
http://pastebin.com/MsY9nEN1

Mi lehet a gond? Eddig nem fordult elő ilyen, a terhelése a gépnek nem változott, nem került fel jelentős mennyiségű adat, új tartalom.

Előre is köszi

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nézd vissza az access logot, hogy mi volt. Jó eséllyel valamilyen elszabadult bot (akár indexelú, akár rosszindulatú) pörgette túl az erőforrásokat. Ha kicsi a VPS, akkor érdemes a MaxClients-et visszavenni és valamilyen szimpatikus PHP opcode cache-el operálni, illetve a fölösleges modulokat mindenhonnan kiszedni.

Találtam valamit, az egyik siteon egy székesfehérvári DSL cimről jött jó pár kérés az összeomlás előtt (HTTP 200, de további GET nem jött, csupán a megszólítás), de nem hinném hogy az lenne a közvetlen ok. Ezen felül van a fő apache error.log-ban pár törött cső (Broken Pipe :D, szétfolytak a bitek), writing data to network üzenet.

A szerver:
2 mag@3 GHz
3 GB RAM
3 GB SWAP

-------------------------
neut @ présház

VPS-ből ez annyira azért nem kicsi. Ha az access.log-ban nem látszik, akkor még az lehet, hogy annyira gyorsan felpörgették, hogy nem tudta diszkre kiírni. Frissítésből minden elérhető fentvan?

Vagy ha van adatbázis alatta, akkor az nem bírja (rosszul van konfigolva, nincs tuningolva) stb.

--
trey @ gépház

Igen, minden frissités fent van, Ubuntu 12.04 LTS.

Itt van a syslog vonatkozó része, gyakorlatilag ez ismétlődik az újrainditásig. Próbálkozik memóriát felszabaditani, először lelövi a mysql-t, aztán a clamot, amavist, postfixet ...stb.

http://pastebin.com/KsyL2z4h

-------------------------
neut @ présház

"Próbálkozik memóriát felszabaditani,"

Az már csak a tűzoltás.

Monitorozni kéne a szervert (apache, mysql, disk, memória, processzor). Munin és társai. Megnézni, hogy mi fogy el, mi száll el.

Erősen valószínű, hogy diszkre vár. iostat, vmstat, iotop, top, iowait, mytop ezeket kellene nézegetni.

--
trey @ gépház

Apache acesses megugrott (a normál érték háromszorosára), a disk I/O rendben volt, VMStat szintén, a MySQL-ben nem volt kiugró érték, a network rendben volt, a LOAD szintén.

-------------------------
neut @ présház

Apache-ban a KeepAlive értékek hogy néznek ki?

--
trey @ gépház

Timeout 300
KeepAlive on
KeepAliveRequests 100
KeepAliveTimeout 5
-------------------------
neut @ présház

Csúnya kérdés: mod_php?
Csak azért kérdezem, mert semmi CGI-re utaló nyomot nem látok a logban, viszont nálam kísértetiesen hasonlót produkált a Drupal/GD2 páros egyszer-kétszer, azóta csak IMagick.

mod_php van, a GD2 használatot pedig megnézem.
-------------------------
neut @ présház

A mod_php-t mindenképp elfelejteném, helyette php-fpm-et próbáld meg, plusz ahogy felettem írták, opcode cache-t! Sokkal jobban bánik a memóriával, mint akár egy fastcgi, vagy mod_php.
http://www.openlogic.com/wazi/bid/209956/mod_php-vs-FastCGI-vs-PHP-FPM-for-Web-Server-Scripting

Ha egy kliens ~C megabájt memóriát eszik, és a gépben van M megabájt memória, akkor a MaxClient legyen mondjuk (80% M)/C

Biztos, hogy a fennmarado 20% M eleg? Gondold vegig megegyszer. Ez vagy bejon vagy nem. Keveset tudunk ahhoz, hogy biztosan kijelethessunk, hogy csinald igy es jo lesz. ;)

Reprodukalhato? Ha igen, akkor hogyan?
Tipp: nezd meg mi volt a kivalto ok. Ez alatt azt ertem, hogy mi okozta, hogy annyira sok apache forkolodott. pl. egy rosszul megirt php szornyedveny eleg csunya dolgokat tud okozni.

Ez tuti hogy nem az eredeit probléma, hanem már csak a mamória elfogyás miatt keletkezett újabb tünetek...

A memória elfogyás okát kellene megtalálni.

A maxclient-en ilyenkor csak azért koppan fel a dolog, mert már nem tudja kiszolgálni a szálakat, és azok feltorlódnak ameddig engeded...

--
zrubi.hu