[SOLVED] Apache hogy rohadna meg...
jó felütés, mi? de tényleg, rohadna meg. :)
szóval, egy rejtéllyel hadakozunk már lassan egy napja.
a kiszolgáló: fut rajta apache (php-s dinamikus oldalakat generálva), egy lighty (a statikus tartalomnak), mysql (memory és myisam táblákkal, az előbbiekben kizárólag és az utóbbiakban jobbára statikus oszlopformátummal, vagyis varchar-ok és text-ek nélkülözésével), memcached (bizonyos szerverszintű adatok tárolására). tehát mondhatni a szokásos webszerver, jó nagy látogatottsággal.
már eddig is csinálta néha, de új kódalap (több OOP -- de statikus classekkel; új SQL és memcache wrapper, stb) berakása után ez a tendencia nagyon felerősödött.
a kísérteties jelenség pedig: **ITT JÖN A LÉNYEG**
1. apache restart
2. minden pörög nagyon jól, a top-ban főleg httpd processzek, a load szépen kúszik fel
3. fogy a memóra (fogynia is kő hát)
4. még mindig pörög, load ugrál fel-le, memória is néha szabadul, néha nem
5. egy idő után egyre kevesebb a memóra (de nem mindig)
6. a top-ból kezdenek kiritkulni a httpd processzek
7. egyre nehezebben válaszol az oldal, a page load idő elkezd nőni erősen
8. elkezd zuhanni a load, egyre kevesebb httpd processz a topban
9. bejönnek a connect timeoutok, site unreachable, nem jött adat, stb
10. a load minimálisra esik, 10-20 httpd processz marad a topban, az oldal elérhetetlen
amiket megnéztem már:
- a memória NEM fogy el teljesen, a 8GB-ból kb. 300-400 mega megmarad
- amikor engedélyeztem az apache-nak a coredumpot, a belassulás közben és után sem coredumpolt, viszont apache leállítása (systemctl stop httpd.service) egy rakat ideig tartott, NA AKKOR kiírt egy raklapnyi dumpot. ki is kapcsoltam a dumpolást, legalább a restart legyen pörgős.
- játszadoztam egy sort a maxrequestsperchild-dal, hátha elfolyik a memória. 5000, 500, 50, végül dühömben 10. a különbség annyi volt, hogy minél kisebb, annál gyorsabban dőlt be a rendszer. na nem mindig, néha bírta. most épp 1.3GB ram van szabadon, és befulladt megint.
- próbáltam memcached és file alapú sessionökkel is (a file alapú is tmpfs-en van)
szóval... mi az ördög retkes valaga történik? a memória NEM fogy ki (teljesen), a load tolerálható mértéken belül van, egyszerűen az apache viselkedik úgy, hogy "köszi, fiúk, elég volt ez az öt perc munka, én most pihennék inkább", és ebből már csak az apache restart ébreszti fel.
gondoltam már arra is, hogy valamiért a session fájlokat lockolja, és belefut valami deadlockba egy idő után, de a kódátírás azt a részt nem érintette, meg már korábban is volt ilyen (csak nem ennyire jelentősen), mind memcached, mind fájl alapú sessionöknél.
valaki? help?
---
MEGOLDÁS: az egyik PHP scriptben egy nagyon jól elbújt végtelen ciklus volt, aztán a session file-ok lockolása miatt az egy idő után szépen beakasztotta az összes processzt. köszönöm mindenki segítségét, a strace innentől jó barátom lesz. :)
- Tovább ([SOLVED] Apache hogy rohadna meg...)
- 5259 megtekintés