Archives:
- November 2011
- Avgust 2011
- Junij 2011
- Maj 2011
- April 2011
- Januar 2011
- December 2010
- November 2010
- Avgust 2010
- Julij 2010
- Junij 2010
- Maj 2010
- Februar 2010
- Januar 2010
- December 2009
- November 2009
- September 2009
- Julij 2009
- Junij 2009
- April 2009
- Marec 2009
- Februar 2009
- November 2008
- Oktober 2008
- September 2008
- Avgust 2008
- Julij 2008
- Junij 2008
- Maj 2008
- April 2008
- Marec 2008
- Januar 2008
- December 2007
- November 2007
- Oktober 2007
- September 2007
- Avgust 2007
- Julij 2007
- Junij 2007
- Maj 2007
- April 2007
- Marec 2007
- Februar 2007
- Januar 2007
- December 2006
- November 2006
- Oktober 2006
- September 2006
- Avgust 2006
- Julij 2006
- Junij 2006
- Maj 2006
- April 2006
- Marec 2006
- Februar 2006
- Januar 2006
- December 2005
- November 2005
- Oktober 2005
- September 2005
- Avgust 2005
- Julij 2005
Meta:
Categories:
- blunt-hate
- comp
- debian
- django
- dogbert
- dovhcajt
- faks
- kiberpipa
- kitchen sink
- kultura
- linux
- ljubljana
- mediji
- opendata
- pootle
- python
- slovenija
- zanimivosti
Recent Posts:
- Prosti podatki za zabavo: 22. Liffe
- Kako pravilno uporabljati Supervizor
- Trgovanje z Burmo
- Avtoprevozniški hlapci
- Ne tolerirajte, da vam pijanci narekujejo dejanja
- Kolesarska zmaga: Bicike(LJ) in Android aplikacija
- Zakaj mora vsak operater kakršnega koli omrežja javno objaviti pregled nad stanjem omrežja
- 598
- Naj poslancem krava crkne
- Malo delo: da ali ne?
Blogroll:
LigHTTPd vs. Apache
Posted on April 28th, 2007 in dovhcajt, linux |
Zadnjič sva se z Almirjem, uradnim administratorjem dogberta, ujela v debato o tem, zakaj bi in zakaj ne bi bilo pametno pred Apache strežnik postaviti kakega izmed enonitnih strežnikov, npr. LigHTTPd.
Mogoče najprej povem kako sem sam spoznal asinhrone strežnike. Od Slo-Techovega administratorja Primoža sem izvedel, da za statično vsebino uporablja Boa webserver, ki je tudi eden izmed strežnikov tega tipa. Nekoliko kasneje sem tudi sam želel pospešiti Apacha na dogbertu, da bi statično vsebino, kot so npr. videi in Debian paketi, stregel strežnik tega tipa, dinamično vsebino pa bi še naprej serviral Apache. Ideja je bila sicer plemenita, moja izvedba pa (takrat) vseeno nekoliko kilava.
Pri strežbi z večimi nitmi namreč vsaka nit obdeluje eno povezavo, pri statičnih datotekah pa se obdelava posameznega zahtevka ustavi pri sistemskih klicih kot so branje in pisanje, ker se napolni buffer in mora za izvedbo celotnega klica program počakati operacijski sistem, da podatke pošlje ali sprejme. Enonitni asinhroni strežniki pa izkoriščajo dejstvo, da operacijski sistem omogoča, da se lahko ob polnem bufferju sistemski klic konča in se izvajanje programa nadaljuje. To se imenuje “non-blocking IO” ali “asynchronous IO”. S tem pravzaprav dobimo program, ki polni bufferje za vsako povezavo.
Glede na to, da je strošek ustvarjanja nove niti in upravljanje niti precej draga operacija, pri nekaj sto procesih Apache hitro postane počasen. Glede na to, da se PHP in večnitnost še vedno stojita navzkriž, je tudi poraba RAMa precej večja. In ko opaziš, da se za velike datoteke po nepotrebnem uporablja en Apache proces, ki zraven nosi še vse ostale module, ki bi jih morda potreboval, če bi šlo za dinamično vsebino, in to povsem po nepotrebnem.
Po drugi strani pa so asinhroni strežniki precej neprimerni za kakršno koli drugo delo kot je “polnjenje bufferjev”. Z vsakim procesorsko intenzivnim delom se namreč poveča zakasnitev pri obdelovanju zahtevka, zato je pametno vse procesorsko delo potisniti v ozadje. LigHTTPd ima zato dobro podporo FastCGI. Pri LigHTTPdju je tudi priporočeno, da gzip stiskanje izvaja PHP ali Python (oz. kar pač teče prek FastCGI) in ne LigHTTPd.
Glede na to, da je LigHTTPd zelo dober za “polnjenje bufferjev” oz. vhodno-izhodne operacije, mu proxyjanje zahtevkov do Apacha ni bistveno večja obremenitev, kot če bi tekel neodvisno, hkrati pa je lahko točka, kjer lahko prevzame strežbo statičnih vsebin in tako razbremenimo Apacha. Kar pa je danes najpomembneje, URL naslovi ostanejo enaki.


