Portál AbcLinuxu, 25. dubna 2024 13:20


Dotaz: LAdenie vykonu apache

1.12.2004 22:25 makak | skóre: 16
LAdenie vykonu apache
Přečteno: 478×
Odpovědět | Admin
Mam taky maly sajtik.. prislo mi tam behom 1 minuty asi 400 ludi a bol problem s vykonom. Mam tam amd 3200+ , 1.5 GB RAM a docela slusne zapojene disky.. Potrebujem, aby mi to dokazalo zvladnut aspon 200 requests/s . aplikacia, ktora tam bezi je databazova(mysql) a zlozitostou asi ako phpMyAdmin. demoni: Apache(2.0.49 prefork) je s mod_php-4.3.4 + Turck_MM_Cache, mysql 4.0.18
Je realne dostat s takymto hardware 200 requests/s ? Zatial som sa ladenim apache moc nezaoberal.. su tam defaultne nastavenia keepalive a pod..
Rad by som sa spytal aj na problem perzistentnych spojeni do mysql z php skriptu a vysokym poctom online uzivatelov... je lepsie radsej nepouzivat perzistentne spojenia v takomto pripade, ked je pocet userov velky ?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.12.2004 22:35 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možná ti pomůže toto
oVirt | SPICE
2.12.2004 01:49 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
To se takhle obecně nedá říct, strašně moc to závisí na povaze a náročnosti té aplikace. Nedávno jsem řešil podobný problém s aplikací pro online přenosy z basketbalu (http://online1.cbf.cz/) a nakonec jsem si vytvořil speciální multithreadovou aplikaci v C++, která realizovala veškerou logiku a komunikaci s databází, takže na PHP zbyl jen minimální front end. Je to podstatně náročnější na odladění, ale podařilo se tím výrazně snížit nároky na paměť i procesor při velkém počtu klientů. Při testování na Athlon XP 1800+ s 512 MB paměti dostávám okolo 250 req/s. Ale pro vaši aplikaci mohou být čísla úplně jiná - podstatně vyšší nebo nižší.

S MySQL nemám tolik praktických zkušeností (používám Firebird), ale persistentní spojení jsou obvykle problém hlavně proto, že při velkém počtu klientských instancí máte trvale otevřeno mnoho spojení s databází, což je náročné hlavně na paměť. Pokud je paměti dost, jsou ale persistentní spojení výhodnější, protože navázání spojení s databází může být často časově náročnější než vlastní dotazy. Jen musíte dávat pozor, aby spojení nebylo příliš mnoho a případně zvýšit limit na počet file deskriptorů (databázi i klientovi) pomocí ulimit -n. V tom je jedna z výhod toho middleware, protože tam jsem si mohl vytvořit efektivní pool databázových spojení, a tak na jednu stranu nečekat pokaždé na nové spojení a na druhou nedržet extrémně mnoho spojení.

2.12.2004 15:04 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
kolko pamati je "dost" aby to stacilo na udrzanie 5000 perzistentnych spojeni ? Ja tam mam 1.5 GB a viac sa mi uz neda osadit. Pri analyze zataze som pozoroval, ze bolo spustenych neumerne mnozstvo httpd-prefork procesov. samotne mysqld a mysqld_safe zaberali mozno 40 MB..
2.12.2004 15:30 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
To se nedá obecně odpovědět. Budete si to muset vyzkoušet, spotřeba paměti závisí na mnoha okolnostech - k jaké databázi se připojujete, jak se k ní připojujete, co s ní děláte atd. Ten veklý počet httpd procesů je daň za použití (pre)fork modelu, tomu se nevyhnete - použít MPM worker s PHP by bylo příliš velké riziko.
2.12.2004 15:31 Vaclav
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Take jsem resil zatez na trochu vice vytizenem serveru, nejsem na to bohuzel joo expert a sam bych nejake tipy uvital, ale kdyz jsem pouzival persistentni spojeni do mysql nedelalo to dobrotu, pri vetsim mnozstvi lidi brzo dochazela pamet a jakmile to zacne swapovat je konec. Zakaz persistentnich spojeni dost pomohl. Jinak turck mmcache je vyborna vec, po nasazeni zatez serveru klesla tak na 30% puvodniho stavu, jen skoda ze vyvoj mmcache se vicemene zastavil a vypada to ze verze funkcni pro PHP 5 se jen tak neobjevi..
2.12.2004 15:33 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
mali by sme v tom pokracovat my... :-)
2.12.2004 15:36 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Takze perzistentne spojenia su skor lepsie pre interne skripty, ktore sa staraju o databazy .. ? Existuje nejake nebezpecenstvo "vyfuknutia" perzistentneho spojenia, ktore napr. pouziva root heslo do databazy ?
2.12.2004 17:11 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Pozor na jednu záludnost. Pokud se kvůli spotřebě paměti rozhodnete nepoužívat persistentní spojení, nesmíte je používat nikde, nestačí nepoužívat je v tom "vytíženém" skriptu. Nelze totiž oddělit instance httpd, které budou vykonávat ten problémový skript, a instance, které budou dělat to ostatní. Jedině že byste spustil dva různé Apache na různých adresách nebo portech.
4.12.2004 00:44 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
No.. ale tie externe skripty mi nerealizuje apache.. ide to formou
$ php -f /externe_skripty/externy_skript.php >> /var/log/logy_exter_skriptu.log
V takomto pripade by tiez robilo nieco neziaduce s pamatou ?
4.12.2004 01:30 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Aha, tak to jsem špatně pochopil. Tady je to jedno, PHP interpreter spouštěný jako příkaz si samozřejmě nemá kde udržovat persistentní spojení (po skončení běhu skriptu skončí), takže u něj je *_pconnect() totéž co *_connect().
4.12.2004 16:39 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Ufff.. prave som si este raz prestudoval php.ini a mal som tam povolenych len 8 perzistentnich liniek na MySQL.. Preto to tak strasne drhlo..
4.12.2004 16:40 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Alebo to plati len pre spustenie jedneho skriptu pri requeste ?
2.12.2004 15:36 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Takze perzistentne spojenia su skor lepsie pre interne skripty, ktore sa staraju o databazy .. ? Existuje nejake nebezpecenstvo "vyfuknutia" perzistentneho spojenia, ktore napr. pouziva root heslo do databazy ?
4.12.2004 17:00 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prave spekulujem okolo KeepAline On alebo Off .. Na stranke sa mi vzdy vyskytuje niekolko obrazkov.. moze tam byt aj 10 obrazkov, ktore este u klienta na disku nie su (v jeho cache browser) (nahodne generovane galerie).. ak uvazujem, ze kazdy obrazok je samostatny request, tak sa mi vyplati zaplut KeepAlive On a dat mu nizky limit keepAlineTimeout (8 s) a Nizku hodnotu KeepAliveMaxRequests (20) a nizku hodnotu aby sa na jedno KeepAlive spojenie stiahla cela HTML aj s obrazkami... Citam, ze vna vytazenych sajtoch je lepsie KeepAlive Off.. Ale toto sa mi zda byt logickejsie..

Co si o tom myslite ?
4.12.2004 18:44 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
KeepAlive bych dal On a KeepAliveMaxRequests vysokou hodnotu, protože tím není co zkazit; příliš velké množstí K bych reguloval snížením KeepAliveTimeout -- nepřijde-li další subrequest, tak to vyhnije na timeoutu, a přijde-li, tak je kontraproduktivní je explicitně omezovat.
4.12.2004 19:30 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Testujem pomocou $ ab2 -n 10000 -c 500 http://localhost/phpinfo.php v ktorom je len funkcia phpinfo(); Vysledky su 400 - 600 requests/s datovy tok okolo 16MB/s ale viac ako polovica requestov je failed.. Apache zvykne spadnut.. Su tam zakladne nastavenia.. Pri testovani skriptov www aplikacie spadne aj mysql resp. zostane nedostupne..
4.12.2004 23:05 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Počet requestů 10000 mi pro konkurenci 500 připadá příliš nízký, vychází to jen 20 requestů na instanci, takže je poměrně pravděpodobné, že tam těch 500 klientů současně vůbec nebude. Doporučil bych zvýšit aspoň na 100000.
4.12.2004 23:08 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Zakazovat KeepAlive má IMHO reálný smysl jen v případě, že má některý klient s keepalive spojeními problémy (a pak bych to dělal jen pro toho klienta) nebo pokud dochází k nasycení hodnoty MaxClients (a nemůžete ji z výkonových nebo paměťových důvodů zvednout), protože pak může dlouhotrvající keepalive spojení na dlouhou dobou odblokovat další klienty.
5.12.2004 09:08 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
dal som tam -c 200 (pocet httpd procesom obmedzeny limit na 345) Pri testovani mi to zvykne spadnut.. ab2 vypise timeout a prestane testovat. Pri pokuse o restartovanie apache vypise
Warning: found stale pidfile (unclean shutdown?)
Pri pokuse o vypnutie apache zostanu httpd procesy bezat.. Je to normalne ? mam blbo nastaveny nejaky timeout ? Ak to test prezije, je tam okolo 30 % failed requests a spravi 500 requests/s

Nastavenie modulu prefork:
Startservers 100
MinSpareServers 20
MaxSpareServers 30
ServerLimit 345
MaxClents 340
MaxRequestsPerChild 10000
--------------------
KeepAlive Off Testujem subor, kde je len phpinfo();
5.12.2004 13:53 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Pokud vám démon při zátěži spadne, tak to zcela určitě normální není - nebo to aspoň není v pořádku. Ale tomu popisu tak úplně nerozumím: spadne ten démon nebo jen nestíhá odpovídat? Jinak tam máte překlep (MaxClients). Ty failed requesty nemusejí nic znamenat, ab považuje za failed i to, že odpověď má jinou délku než odpověď na první zkušební dotaz, takže při benchmarkování dynamických stránek se musíte dívat i na důvody těch failed requestů.
5.12.2004 14:11 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
urobi to asi tolko, ze po skonceni testu v nulovej zatazi pri httpd -k stop zostane nadalej bezat asi 30 demonov httpd. pri pokuse o httpd -k start vypise ze nasiel subor s PID a hada, ci nebol urobeny unclean shutdown.
Uvidime, co to spravi po update..
5.12.2004 14:23 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
siahol som so suse updatiky a je to este horsie...
5.12.2004 11:47 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
pokial dam testovat len staticky subor index.html o velkosti 50KB spravi to 2300 requests/s a bez chyb.. pravdepodobne mam chybu v php.ini ? Je normalne take spomalenie (5x) s pouzitim php ?
5.12.2004 13:54 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Tomu bych klidně věřil. Zrovna phpinfo() je docela náročná funkce, která toho musí spoustu projít.
5.12.2004 12:47 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
apr_poll: Timeout .. bla bla.. nasiel som na nete ze je to bug programu ab.
5.12.2004 12:51 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
pardon.. preklep.. bug v apache.. vraj 2.0.48-1 to ma fixnute, ale mne to robi v 2.0.49
5.12.2004 12:58 jm
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Aktualni verzi (2.0.52) jste zkousel?
5.12.2004 13:15 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
este nie.. Ak to niekto skusal, prosim napiste o tom..
5.12.2004 13:41 jm
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
No me se ve verzi 2.0.52 zadna podobna hlaska v logu neukazuje, proto jsem to psal. :-)
5.12.2004 13:48 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
To nieje v logoch ale pri testovani z (inej) masiny
ab[ab2] -n 10000 -c 200 http:/localhost/index.html
5.12.2004 13:56 Michal Kubeček
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Na tu chybu by to nemělo mít vliv, ale benchmarkování z téhož stroje je naprosto nesměrodatné. Ten benchmark musíte provádět z jiného stroje, jinak se vám (hlavně u statických a nenáročných dynamických stránek) budou akorát httpd a ab mezi sebou prát o výkon.
5.12.2004 14:22 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
robim to tak preto, lebo mam siet obmedzenu na 10MBit/s .. sietovka notebooku na cross-over viac neda.. Uz ked takto pekne testujeme, rozmyslam nad ttym, ako sa pred takymto testikom chranit,.. mohol by byt z toho docela slusny DoS..
5.12.2004 14:52 makak | skóre: 16
Rozbalit Rozbalit vše Re: LAdenie vykonu apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
A mame tu skutocne TERNO...
ab2 test so suborom v ktorom je len phpinfo(); je s Turck_MM_Cache 500Requests/s .. po vypnuti Turck_MMCache je to 1500 Req/s
Test web aplikacie vychadza este rychlejsie..
Ma tu niekto skusenosti s Turck_MM)Cache ? Zadrhel bol v nom...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.