Pokles vykonu Apache/PHP4/MySQL
Pavel Lisy
pali na tmapy.cz
Středa Duben 28 10:12:22 CEST 2004
Potykam se s problemem vyrazneho poklesu vykonu apache pri vysoke
zatezi. Myslim, ze je to obecna vec, tak se budu ptat pomerne obecne a
chtel bych alespon nasmerovani, kde hledat reseni.
Aplikace je napsana v php/mysql. Problem vznika na produkcnim serveru,
ktery v urcitych chvilich (zrejme pri spicce v zatizeni) zacne narustat
load a server prestane odpovidat.
Ve snaze najit, kde je problem, jsem zacal delat zatezove testy na jinem
stroji (v lokalni siti) se stejnou HW a SW konfiguraci. Vysledky ukazuji
stale stejne chovani.
Server zacne nabirat klienty, procesory jedou na 100% a ubyva mu volna
pamet. V situaci, kdy mu zbyde asi 25-30 MB, zacne swapovat load narusta
a vykon jde pomalu dolu. To mi prijde normalni. Potom ale dojde k
"podivnemu" chovani. At server swapuje nebo ne (pokud nastavim nizky
MaxClients), dojde po urcite dobe 100 vytizeni k uvolneni velkeho
mnozstvi pameti (cca 100MB), poklesu vytizeni procesoru na 50%, ale
pocet klientu httpd se nemeni a server v podstate prestava reagovat
(reaguje radove pomaleji).
Pidil jsem se po vysvetleni a nejpravdepodobnejsi mi pripada, ze apache
kvuli korektnimu ukonceni TCP spojeni pomalu uvolnuje volne procesy
(klicove termin je "Lingering Close"). Nasel jsem, ze existuje nejaky
patch do apache 1.3 a daemon, ktery by mel tento problem vyresit, ale:
potreboval bych to vyresit s apache 2.0.x (mam to v RHEL-3).
Dotazy:
1. Resil jste nekdo podobne problemy s poklesem vykonu
Apache/PHP4/MySQL?
2. Jsou moje uvahy o moznem puvodci problemu spravne?
3. Mohlo by to byt jeste necim jinym? Cim?
4. Existuje moznost problem s "Lingering Close" vyresit i v apache
2.0.x?
Pavel
--
Pavel Lisy <pali na tmapy.cz>
T-MAPY spol. s r.o.
Další informace o konferenci Linux