Apache server reached maxclients setting

Ü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ások

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

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

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