Windows Apache Requests Per Second
4 naročniki
4 naročniki
Pozdravljeni,
Pred kratim sem se odločil da stestiram svoj domači spletni streznik ki laufa na optiki 100/100mbps na naslednjih specifikacijah:
AMD A6-3650 APU
DDR3 8GB 1600MHz
SSD 200gb (MySQL tudi laufa gor)
4x 1TB RAID 10 HDD's
Windows Server 2008 R2
Moji rezultati pa so naslednji,
Test na <?php echo "hello!"; ?> dobim okoli 5600 RPS
na spletni strani ki sem jo ustvaril pa le 100 RPS in glede na to da XDEBUG Profiler in pa PHPed pravita da je le 20ms časa potrebno za processiranje PHPja mi ne gre v glavo zakaj so rezultati tako slabi?
Recimo spletne strani kod partis imajo do 2000 RPS ampak nisem prepričan da so ravno multi server konfiguracije?
Kakor koli vsaj 200RPS pričakujem na takih specih, a mi lahko kdo pomaga prosim?
Mogoče je res tako velika razlika med linux/windows okoljem ?
P.S.: Aj nisem omenil test je bil opravljen na Apache X64 (2.4) MOD_PHP z PHP 5.4.9 X64 + APC.
LP!
10 odgovorov
20ms je 50 requestov na sekundo na jedro.
Tvoj proc ima 4 jedra, pa ravno prideš na 200. Razen če je to že všteto v tvojem benchmarku.
Oh? To pa je počasi. Torej če želim zvičat RPS moram optimizirat spletno stran še bolj, kar se mi zdi že maltene nemogoče, saj sesssion in pa mysql sta že skoraj 15ms na mojem strezniku :/.
Kolko je torej nekje Povprečen RPS na kaki bolši streznik?
In pa še zdaj se ne morem odločit za zamenjavo na linux saj imam eno zadevo ki bi jo nujno rabil laufat na windows okolju ker na linuxu ni dobene alternative zanjo. Torej bi moral laufat VPS znotraj :/
Mi imamo Windows mašine ter php (no FTI je na linux mašini). Sam predlagam, da greš na IIS + php + wincache.
Sam sem imel izredne težave z APCjem na apacheju. PHP se je konstanto sesuval (in posledično sesul Apache). Prav tako sem imel težave z 5.4 verzijo tako, da je vse 5.3.
Kako lahko simpl testiraš sesuvanje:
1. napiši nek php, ki požre ves memory ( while (true) { $array[] = md5(time()); } )
2. odpri ta php hkrati v parih straneh (če dobiš še par kolegov ki hrati odpre bo še bolje)
3. poglej kakšne errorje dobiš. Pričakovano je da dobiš memory limit od PHPja, toda meni je včasih metalo drugačen error (res bodi pozoren ker errorja sta si podobna (toda nista ista).
Poglej v apache error log in php error log. Meni se v zgornem primeru pojavil nek zend error (imajo uporabniki kar pogoste težave s tem).
Sedaj na IIS + PHP 5.3 + wincache zadeva deluje zelo stabilno in celo hitreje kot z apachijem (cca. 25% več RPS).
Aja je pa IIS 8 na WIN 2012.
Bom preveril za ta bug.
Moram pa rečt da sedaj sem pa zelo zadovoljen z svojo konfiguracijo saj sem po dolgem razmisleku prišel do zaključka da je DISK tisti ki mi vse skupaj zelo upočasnjuje (nevem zakaj :/ saj je SSD) in sem zadevo nastavil z apc.stat na 0. Torej za produkcijo da mi ne preglejuje vseh PHP datotek za modifikacijo datoteke (nevem če je to pravilen slovenski izraz). Sedaj pa imam naslednje rezultate:
1800 RPS na spletni strani, 7651 RPS na <?php echo "hello!"; ?>
Mislim da je to to kar sem iskal. Sicer sem tele rezultate dobil na I5 mašini z SSDjom ampak mislim da moj AMD ne bo kaj dosti slabši ko zadevo prenesem tja :)
P.S.: Drugače pa sam še nisem imel dobenih problemov z stabilnostjo PHP 5.4.9 + Apache + APC do sedaj, bom pa preveril. Sam si drugače vedno sam "prevajam" (compilam) php zase ker nikoli nisem imel dobrih izkušenj z prenesenimi.
P.P.S.: IIS mi nikoli ni bil všeč =/. Pa nekako sem navajen uporabljat .htaccess ki mi res olajša delo
Evo sem sprobal memory bug pa ga sam nimam na apache X64 + PHP X64 5.4.9
Zgodilo se mi je, lol, da mi je Apache celi server freezno, ker je RAM usage šel na MAX. Vseh 8GB mi je pobralo. Zdaj glede na to da je blo 100 requestov na enkrat mislim da to ni ravno bug ? Ni se pa sesulo dokler nisem sam prekinil zadeve ker je šteknilo vse skupaj lol. Drugače pa ja ni se pa sesulo pa dobenih čudnih errorov ni bilo razen Fatal Error memory exhousted.
veliko je dejavnikov kako izboljsat odzivnost apache-a in PHPja...
kot je bostjan predlagal, kak php cache... izklopi pa nepotrebne module... tako v apachu kot v PHPju...
sicer pa apache nikakor ni biser pri rpcjih... kaksen Lighttpd ali nginx sta boljsa v vecini primerov
Pri nalaganju statičnih stvari (slike ipd...) sta boljša, pri PHP skriptah pa skoraj ni razlike.
Zagotovo pa windows nosi del krivde za počasnost.
za statične stvari me sploh ne ovira apache ker itak uporabljam CDN, ampak bolj me skrbi PHP. Nginx in pa LightHttp sta dejansko počasnejša od apache v nekaterih testih z PHPjem, tako da nista ravno biser za RPSje tud ne.
Tako da ja, ampak mja še vedno razmišljam ali bi preklopil na linux ali ne. Pač bomo videli, sedaj mi zadeva laufa kod sem hotel tako da nb =).
Mešetar:
veliko je dejavnikov kako izboljsat odzivnost apache-a in PHPja...kot je bostjan predlagal, kak php cache... izklopi pa nepotrebne module... tako v apachu kot v PHPju...
sicer pa apache nikakor ni biser pri rpcjih... kaksen Lighttpd ali nginx sta boljsa v vecini primerov
Nimam dobenih nepotrebnih apache in pa php modulov/dodatkov.
Zgleda da nisi prebral o čem se gre. Glede na to da omenjaš PHP Cache za katerega sem lepo povedal da uporabljam APC (Advanced PHP Cache).
Jacky to compilaš PHP na windows mašini? Če ti to uspe respect...sem se 2* lotil tko za kako urco pa nikol uspel :)
Zato mi X64 PHP nikol ni šel gor, ker so .dll-ji samo za 32. Pa še te je včasih težko najdit.
Ja sam sem si compilal x64 PHP za Windows samo prejšni teden ko pa sem nadgradil na win8 pa mi enostavno ni več za nastavlat vsega skup pa si nisem še porihtal. Bom pa poskusil tudi na Win8 saj je baje z novim VC10 še lazje (xcache, apc ipd baje ne gredo). Drugače pa vse dodatke ipd lahko compilaš zraven za X64.
Mislim da če malo pobrskaš po apache longue boš tudi našel kakšno X64 PHP verzijo ker dečki so zelo sposobni!
http://www.apachelounge.com/
P.S.: Meni pa ni šlo compilat Apache X64 =/ na srečo sem ga našel na ApacheLounge.