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