LightTPD是什么?魅力在哪?讓知名網(wǎng)站放棄用Apache?

一、Lighttpd簡(jiǎn)介

據(jù)Netcraft做的數(shù)據(jù)調(diào)查顯示,今年一月份全球使用LightTPD的網(wǎng)址為170,000,二月份這個(gè)數(shù)字達(dá)到了7000,000,在短短的一個(gè) 月內(nèi)驚人地增長(zhǎng)了400%!在這些網(wǎng)址中,包括YouTub
e、Wikipedia和Meebo等。而且目前為止,使用LightTPD的網(wǎng)址仍在以極高 的比例增長(zhǎng),尤其是歐美等地的網(wǎng)址,許多新興網(wǎng)站也紛紛選用LightTPD,而且LightTPD在Ruby on Rails社區(qū)中尤其受歡迎。

        以Meebo為例。它是一個(gè)內(nèi)置在瀏覽器內(nèi)的信息工具,它支持多種信息工具,如Yahoo! Messenger, Windows Live Messenger, ICQ, AIM和Jabber等,每天Meebo要處理至少七千萬(wàn)條信息。這樣的一個(gè)網(wǎng)站是用的便是LightTPD。

        值得一提的是,Meebo使用的卻是Linux服務(wù)器,然而它拋棄Apache以及LAMP(Linux+ Apache+ Mysql+ Perl/PHP/Python)的網(wǎng)絡(luò)構(gòu)建方式,選擇了LightTPD。
                    下圖為使用Lighttp的網(wǎng)址增長(zhǎng)率

        很多人也許會(huì)問(wèn)具有如此“魔力”的LightTPD到底是什么?簡(jiǎn)單說(shuō)一下:LightTPD是一個(gè)輕量級(jí)的Web 服務(wù)器,支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫(xiě), Alias等重要功能。它具有非常低的內(nèi)存開(kāi)銷,cpu占用率低,效能好,以及豐富的模塊等特點(diǎn)。其靜態(tài)文件的響應(yīng)能力遠(yuǎn)高于Apache,可謂Web服 務(wù)器的后期之秀。

        許多技術(shù)專家認(rèn)為,在Web 服務(wù)器中LightTPD比Apache更小更輕量,卻擁有比后者更高的性能。雖然LightTPD在Web服務(wù)器方面只占很小的市場(chǎng)份額,“但它正極速增長(zhǎng),日后必將是Web服務(wù)器領(lǐng)域的有力競(jìng)爭(zhēng)者。”

二、下面是部署應(yīng)用時(shí)LightTPD在前端相對(duì)其他web server的比較:

前端目前已知的可以選擇apache, LightTPD, litespeed, nginx, haproxy
1、apache2.2
apache是全球市場(chǎng)占有率最高的web server,超過(guò)全球互聯(lián)網(wǎng)網(wǎng)站50%的網(wǎng)站都用apache。apache2.2 + mod_proxy_balancer是一個(gè)非常流行,非常穩(wěn)定的方案。

使用apache2.2唯一的問(wèn)題就是apache的性能和后面那些輕量級(jí)web server相比,差太遠(yuǎn)了。一方面在處理靜態(tài)請(qǐng)求方面apache要比LightTPD慢3-5倍,內(nèi)存消耗和CPU消耗也高出一個(gè)數(shù)量級(jí),另一方面 mod_proxy_balancer的分發(fā)性能也不高,比haproxy差很遠(yuǎn)。

2、LightTPD
LightTPD是一個(gè)輕量級(jí)高性能web server,一個(gè)在MySQL Inc工作的德國(guó)人寫(xiě)的。性能很好,內(nèi)存和CPU資源消耗很低,支持絕大多數(shù)apache的功能,是apache的絕好替代者。目前LightTPD已經(jīng) 上升到全球互聯(lián)網(wǎng)第四大web server,市場(chǎng)占有率僅此于apache,IIS和Sun。

LightTPD唯一的問(wèn)題是proxy功能不完善,因此不適合搭配mongrel來(lái)使用。LightTPD下一個(gè)版本1.5.0的proxy模塊重寫(xiě)過(guò)了,將會(huì)解決這個(gè)問(wèn)題。

3、litespeed
和LightTPD差不多,商業(yè)產(chǎn)品,收費(fèi)的。比LightTPD來(lái)說(shuō),多一個(gè)web管理界面,不用寫(xiě)配置文件了。litespeed專門為單機(jī)運(yùn)行的 RoR開(kāi)發(fā)了一個(gè)lsapi協(xié)議,號(hào)稱性能最好,比httpd和fcgi都要好。他的proxy功能比LightTPD完善。

litespeed的缺點(diǎn)我卻認(rèn)為恰恰是這個(gè)lsapi。因?yàn)閘sapi不是web server啟動(dòng)的時(shí)候啟動(dòng)固定數(shù)目的ruby進(jìn)程,而是根據(jù)請(qǐng)求繁忙程度,動(dòng)態(tài)創(chuàng)建和銷毀ruby進(jìn)程,貌似節(jié)省資源,實(shí)則和apache2.2進(jìn)程模 型一樣,留下很大的黑客攻擊漏洞。只要黑客瞬時(shí)發(fā)起大量動(dòng)態(tài)請(qǐng)求,就會(huì)讓服務(wù)器忙于創(chuàng)建ruby進(jìn)程而導(dǎo)致CPU資源耗盡,失去響應(yīng)。

當(dāng)然,litespeed也支持httpd和fcgi,這個(gè)和LightTPD用法一樣的,到?jīng)]有這種問(wèn)題。

4、nginx
一個(gè)俄國(guó)人開(kāi)發(fā)的輕量級(jí)高性能web server,特點(diǎn)是做proxy性能很好,因此被推薦取代apache2.2的mod_proxy_balancer,來(lái)和mongrel cluster搭配。其他方面和LightTPD到差不多。

要說(shuō)缺點(diǎn),可能就是發(fā)展的時(shí)間比較短,至今沒(méi)有正式版本,還是beta版。沒(méi)有經(jīng)過(guò)足夠網(wǎng)站的驗(yàn)證。

5、haproxy
就是一個(gè)純粹的高性能proxy,不處理靜態(tài)資源的,所有請(qǐng)求統(tǒng)統(tǒng)分發(fā)到后端。

三、如何選擇:

JavaEye為什么用LightTPD + fcgi呢?原因如下:

1) LightTPD發(fā)展了好幾年了,市場(chǎng)占有率也相當(dāng)高,是一個(gè)經(jīng)過(guò)實(shí)踐檢驗(yàn)的server,它的文檔也很全;而nginx還沒(méi)有經(jīng)過(guò)足夠的市場(chǎng)檢驗(yàn),文檔也很缺乏
2) JavaEye的ruby進(jìn)程和web server在一臺(tái)機(jī)器上面跑,通過(guò)unix socket使用fcgi協(xié)議通訊可以避免tcp的網(wǎng)絡(luò)開(kāi)銷,其通訊速度比使用tcp socket使用http協(xié)議通訊要快一些。

什么場(chǎng)合使用haproxy?

大規(guī)模部署,例如你的RoR應(yīng)用到十幾臺(tái)服務(wù)器上面去,你用haproxy會(huì)更好,可以方便的添加刪除應(yīng)用服務(wù)器節(jié)點(diǎn),proxy性能更好。

這些也是我為什么在LAMPR中加入LightTPD的原因。

發(fā)表評(píng)論

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.