Ü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
- 3113 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
Vagy ha van adatbázis alatta, akkor az nem bírja (rosszul van konfigolva, nincs tuningolva) stb.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
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.
-------------------------
neut @ présház
- A hozzászóláshoz be kell jelentkezni
"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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Apache-ban a KeepAlive értékek hogy néznek ki?
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Timeout 300
KeepAlive on
KeepAliveRequests 100
KeepAliveTimeout 5
-------------------------
neut @ présház
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
mod_php van, a GD2 használatot pedig megnézem.
-------------------------
neut @ présház
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni