日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

WEB服務(wù)器性能瓶頸分析

 CevenCheng 2011-12-26
轉(zhuǎn)自:http://www.it./PcTech-34683.html 

本文先介紹一下各種WEB服務(wù)器平臺(tái),然后對(duì)影響WEB服務(wù)器性能的各方面做了分析,最后解析了目前使用最普遍的Apache服務(wù)器在服務(wù)請(qǐng)求高峰時(shí)的響應(yīng)延遲現(xiàn)象 

  在上周的一篇文章里,我們介紹了搭建WEB服務(wù)器的方法,但這只是建立WEB服務(wù)器的第一步,在實(shí)際的站點(diǎn)運(yùn)行中,也許服務(wù)器的性能表現(xiàn)會(huì)不 盡如人意,這就需要分析具體的服務(wù)器性能瓶頸并找到解決辦法。本文先介紹一下各種WEB服務(wù)器平臺(tái),然后對(duì)影響WEB服務(wù)器性能的各方面做了分析,最后解 析了目前使用最普遍的Apache服務(wù)器在服務(wù)請(qǐng)求高峰時(shí)的響應(yīng)延遲現(xiàn)象,希望能對(duì)WEB服務(wù)器性能瓶頸的分析有所幫助。 
   


  對(duì)于互聯(lián)網(wǎng)上的web平臺(tái),究竟有多少種不同的軟硬件組合方式?你肯定會(huì)對(duì)這個(gè)數(shù)字感到吃驚。從配置了最新版本的IIS(Internet Information Server,因特網(wǎng)信息服務(wù)器)的WindowsXP系統(tǒng)到運(yùn)行在Apache服務(wù)器上“古老”的SunOS 4.x系統(tǒng),真是數(shù)之不盡。當(dāng)然,最流行的幾種平臺(tái)也就那么幾種。Windows NT類(lèi)(尤其是同時(shí)配置了IIS和SQL Server的系統(tǒng))是近來(lái)很常見(jiàn)的web平臺(tái)。同時(shí),運(yùn)行在SUN公司SPARC工作站上的Solaris(安裝了Netscape公司企業(yè)版的 Webserver)和免費(fèi)的Apache服務(wù)器系統(tǒng)也比較常見(jiàn)。此外,令人相當(dāng)吃驚的是,Linux和FreeBSD這兩款開(kāi)放源代碼的頂級(jí)操作系統(tǒng)對(duì) 上述幾類(lèi)平臺(tái)構(gòu)成了巨大的威脅。正在改變服務(wù)器操作系統(tǒng)的分布格局。 

為什么很多人選擇Windows NT/2000/XP? 

  先撇開(kāi)卓越的運(yùn)行穩(wěn)定性、系統(tǒng)正常穩(wěn)定運(yùn)行時(shí)間或表現(xiàn)等不論,Windows NT類(lèi)操作系統(tǒng)在服務(wù)器應(yīng)用環(huán)境領(lǐng)域占據(jù)的市場(chǎng)份額以驚人的速度持續(xù)快速增長(zhǎng),原因主要是,它具有非常體貼用戶(hù)的易操作性及出類(lèi)拔萃的開(kāi)發(fā)工具。 

  很多剛進(jìn)入IT領(lǐng)域的用戶(hù)非常喜歡Windows的這種“平民化”的界面,因?yàn)樗鼧O大地簡(jiǎn)化了日常的管理工作。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),則因 Microsoft提供的目前最完整、最有效率的開(kāi)發(fā)環(huán)境,而從NT系統(tǒng)中獲益不小。類(lèi)似InterDev的一些開(kāi)發(fā)工具與Visual Source Safe(在龐大的工程中對(duì)軟件版本進(jìn)行管理)結(jié)合使用,能輕松地削減開(kāi)發(fā)人員的開(kāi)發(fā)時(shí)間。 

為什么有的人不選擇Windows NT? 

  Windows NT畢竟仍屬Windows家族的一員,也存在眾多該系列操作系統(tǒng)所遭遇的問(wèn)題,從而影響到一些運(yùn)算量大、資源消耗多的應(yīng)用程序的穩(wěn)定性和可執(zhí)行性。 Windows NT 4采用的是一個(gè)靜態(tài)的內(nèi)核,這就使得即使是執(zhí)行一些非常簡(jiǎn)單的任務(wù),比如裝載一個(gè)新的驅(qū)動(dòng)器,也必須重啟機(jī)器。此外,和UNIX 相較而言,Windows NT還缺少大量的遠(yuǎn)程管理手段。不過(guò),隨著微軟新版的服務(wù)器操作系統(tǒng)2000/XP的發(fā)布,這些問(wèn)題正在得到解決,最新的WindwoXP服務(wù)器版可以說(shuō) 是一個(gè)不錯(cuò)的服務(wù)器操作系統(tǒng)。 
   
關(guān)于Solaris 

  Solaris是UNIX操作系統(tǒng)在市場(chǎng)上最流行的一種變體?;ヂ?lián)網(wǎng)上大部分站點(diǎn)都采用Solaris提供web服務(wù)。在UNIX所有不同的 變體中,Solaris擁有最大的用戶(hù)群體,相應(yīng)地,它也是利潤(rùn)最豐厚的一款軟件。各種應(yīng)用服務(wù)器和應(yīng)用環(huán)境專(zhuān)為Solaris設(shè)計(jì)的版本,比如 ColdFusion(普遍使用在Windows NT上)均已推出。Solaris系統(tǒng)能夠提供真實(shí)的企業(yè)級(jí)可靠性和高性能,其他平臺(tái)很難與之媲美。與Windows NT不同的是,當(dāng)你給系統(tǒng)添加額外的硬盤(pán)時(shí),并不需要將Solaris系統(tǒng)重啟。另外,在Sun公司更大型的企業(yè)級(jí)服務(wù)器上,你甚至能夠在不關(guān)機(jī)的情況 下,更換內(nèi)存條和CPU。與眾多平臺(tái)相比,Solaris還能提供最佳的多重處理(multiprocessing)性能。 

為什么有人不愿意選擇Solaris? 
   
  好了,為了公平起見(jiàn),我來(lái)說(shuō)說(shuō)人們不選擇Solaris的原因。先要指出的是,基于Intel芯片的Solaris平臺(tái)不等同基于SPARC 芯片的Solaris平臺(tái)。盡管Intel芯片版本的Solaris系統(tǒng)擁有與SPARC芯片版本一樣的高可靠性,但用于前者的商用軟件的數(shù)量明顯不如后 者多,同時(shí),由于硬件上的一些限制,Solaris系統(tǒng)的一些相對(duì)高級(jí)的特性(比如CPU或內(nèi)存的熱插拔升級(jí))在Intel芯片版本中無(wú)法實(shí)現(xiàn)。前段時(shí)間 甚至有消息說(shuō)最新的Solaris將不再支持Intel平臺(tái),這對(duì)采用Intel硬件平臺(tái)的用戶(hù)可說(shuō)是一種遺憾。 

選擇Linux還是FressBSD? 

  開(kāi)放源代碼操作系統(tǒng)(如Linux、FreeBSD)在市場(chǎng)上搶占著越來(lái)越大的市場(chǎng)份額,人們對(duì)這類(lèi)系統(tǒng)的總體接受程度也開(kāi)始以驚人的速度增 長(zhǎng)。幾年前,只有少數(shù)幾家公司知道Linux到底是什么,但是目前它已被業(yè)界幾乎每一個(gè)專(zhuān)業(yè)用戶(hù)所大力推崇。舉個(gè)例子,你可以在市場(chǎng)上買(mǎi)到更多的基于 Linux平臺(tái)的商業(yè)軟件,如Oracle、Sybase等等。 

  同時(shí),F(xiàn)reeBSD也取得了相當(dāng)一部分商業(yè)支持,其中一些是由于Linux流行的原因而帶來(lái)的。很多大型網(wǎng)站,比如Yahoo,跑的都是 FreeBSD平臺(tái)。FreeBSD和Linux之間的兼容性問(wèn)題很小。因此,我們會(huì)發(fā)現(xiàn),這兩款操作系統(tǒng)的用戶(hù)群體將同步持續(xù)增長(zhǎng)。 

  不幸的是,很多使用開(kāi)放源代碼操作系統(tǒng)的用戶(hù)由于不希望繳納相關(guān)的成本費(fèi)用,實(shí)際上在抵制使用Linux平臺(tái)上的商業(yè)軟件。從某個(gè)角度來(lái)看, 仿佛是因?yàn)檫@些用戶(hù)由于習(xí)慣了Linux系統(tǒng)免費(fèi)使用的做法,而不愿意為服務(wù)器的其他應(yīng)用付費(fèi)。從目前情況看,這已對(duì)市場(chǎng)產(chǎn)生了激冷效應(yīng)。我估計(jì),隨著越 來(lái)越多基于該平臺(tái)的軟件發(fā)布,這種情況將會(huì)更加惡化。 

  這主要是因?yàn)長(zhǎng)inux操作系統(tǒng)大多是被小公司和個(gè)人所選用,而這類(lèi)群體實(shí)際上根本買(mǎi)不起企業(yè)級(jí)的商業(yè)軟件。這種狀況只有在opensource操作系統(tǒng)的技術(shù)和市場(chǎng)成熟壯大起來(lái),并被更多的大公司(他們往往擁有更大的需求)接納之后才會(huì)逐漸改變。 

  在互聯(lián)網(wǎng)上,對(duì)開(kāi)放源碼操作系統(tǒng)支持的呼聲很高,但是,人們對(duì)這類(lèi)平臺(tái)學(xué)習(xí)和理解的難度比Windows,甚或是Solaris要大得多。另 外,所有的這類(lèi)軟件均處在一個(gè)快速發(fā)展的過(guò)程中。所以,你在尋找你需要的東西的時(shí)候,也許總會(huì)不經(jīng)意地發(fā)現(xiàn)系統(tǒng)的一些小bug(錯(cuò)誤的計(jì)算機(jī)程序代碼或例 行程序上的瑕疵)及不完整的軟件包。 

  對(duì)于那些WEB服務(wù)需求小,硬件資源緊張的小公司來(lái)說(shuō),他們一般更愿意采用一款開(kāi)放源碼操作系統(tǒng)(而不采用商業(yè)解決方案)。而對(duì)于缺少經(jīng)驗(yàn)的 公司來(lái)說(shuō),他們則傾向選擇安全可靠的Windows解決方案。那些對(duì)Web 發(fā)布需求巨大,同時(shí)要求系統(tǒng)正常運(yùn)行時(shí)間比率超過(guò)99%或以上的公司也許會(huì)選擇Solaris平臺(tái)。因?yàn)閛laris的穩(wěn)定性可以為滿(mǎn)足這種苛刻的運(yùn)行要 求提供更大保障。 



  一臺(tái)提供web發(fā)布服務(wù)的服務(wù)器與其他大多數(shù)的常規(guī)主機(jī)相比較,被更寬泛的負(fù)載狀態(tài)(load conditions)所影響。事實(shí)上,一個(gè)web站點(diǎn)里能夠容納大量各種各樣的內(nèi)容,即使是其中一個(gè)簡(jiǎn)單的HTTP服務(wù)器(軟件意義上的服務(wù)器),其負(fù) 載也遠(yuǎn)遠(yuǎn)超出了HTTP協(xié)議設(shè)計(jì)者當(dāng)初所能預(yù)料的范圍。 

  實(shí)際上,目前的web站點(diǎn)能夠采用各種技術(shù),包括靜態(tài)HTML、內(nèi)嵌或服務(wù)器解析的HTML(inline/server-parsed HTML)和CGI(Common Gateway Interface,公共網(wǎng)關(guān)接口),并以O(shè)DBC(Open Database Connectivity,開(kāi)放式數(shù)據(jù)庫(kù)互接)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的互連。這些不同的數(shù)據(jù)源中有一部分非常普通,而其余部分卻并非如此。不管如何,每一種數(shù)據(jù)源均 以其獨(dú)特的方式在web服務(wù)中發(fā)揮著作用。在決定你的站點(diǎn)到底適合采用哪種服務(wù)器之前,你應(yīng)該明確一下,你的需求究竟是什么。 

靜態(tài)HTML 

  這是互聯(lián)網(wǎng)上任何站點(diǎn)最基本的一種構(gòu)成“元素”。盡管真正意義上完全采用靜態(tài)HTML來(lái)搭建的站點(diǎn)數(shù)量越來(lái)越少,但是,幾乎所有的站點(diǎn)均不同 程度地采用了這種“元素”。靜態(tài)的HTML頁(yè)面嚴(yán)格地由標(biāo)準(zhǔn)的HTML標(biāo)示語(yǔ)言構(gòu)成,并不需要服務(wù)器端即時(shí)運(yùn)算生成。這意味著,對(duì)一個(gè)靜態(tài)HTML文檔發(fā) 出訪問(wèn)請(qǐng)求后,服務(wù)器端只是簡(jiǎn)單地將該文檔傳輸?shù)娇蛻?hù)端。從服務(wù)器運(yùn)行的那個(gè)時(shí)間片來(lái)看,這個(gè)傳輸過(guò)程僅僅占用了很小的CPU資源。為了提高靜態(tài)HTML 的訪問(wèn)效率,主要可以對(duì)以下幾個(gè)方面進(jìn)行優(yōu)化:網(wǎng)絡(luò)帶寬、磁盤(pán)I/O以及cache(高速緩沖存儲(chǔ)器)。 

服務(wù)器解析的HTML 

  依靠服務(wù)器解析的HTML頁(yè)面包括兩部分的代碼,一是標(biāo)準(zhǔn)的HTML代碼,二是服務(wù)器端運(yùn)行的代碼(由第三方的處理程序或web服務(wù)器自己在 頁(yè)面?zhèn)鬏數(shù)娇蛻?hù)端前對(duì)其進(jìn)行解釋?zhuān)?。這種HTML頁(yè)面是CGI程序的升級(jí)版本(因?yàn)樗膱?zhí)行效率更高)。目前,內(nèi)嵌的服務(wù)器端擴(kuò)展集,比如ASP、 PHP3,甚或是普通的服務(wù)器端支持的擴(kuò)展集,已得到了非常普遍的使用。開(kāi)發(fā)這種擴(kuò)展集的目的是要使網(wǎng)站上的內(nèi)容更生動(dòng)活潑,更模塊化,以利于維護(hù)。此 外,服務(wù)器解析文檔改善了性能相對(duì)低下的客戶(hù)端工作模式,將客戶(hù)端的負(fù)載降低到最低程度,同時(shí)也降低了數(shù)據(jù)傳輸對(duì)帶寬的要求。很顯然,你要得到這一切,就 必須付出金錢(qián)的代價(jià)。因?yàn)榉?wù)器解析文檔必須在其傳輸?shù)娇蛻?hù)端前就通過(guò)服務(wù)器來(lái)進(jìn)行解釋?zhuān)?,你要給你的服務(wù)器添加額外的CPU。 

公共網(wǎng)關(guān)接口(CGI) 

  CGI使Web站點(diǎn)具有更佳的交互性和實(shí)用性。它可以用來(lái)收集用戶(hù)的輸入數(shù)據(jù),允許運(yùn)行外部程序以執(zhí)行眾多與用戶(hù)輸入相關(guān)的任務(wù)以及輸出執(zhí)行 結(jié)果等,因此,應(yīng)用CGI后,互聯(lián)網(wǎng)的用途被大大擴(kuò)充了。但是,要使用CGI,就必須付出一定開(kāi)銷(xiāo)。特別在CGI與解釋器(譬如PERL)配合使用 時(shí),CGI的調(diào)用成本會(huì)很高。如果您的系統(tǒng)運(yùn)行在極端繁重的負(fù)載條件下,該成本更是高居不下。如果可能的話,您應(yīng)該考慮選用ASP或PHP3來(lái)取代 CGI。 

數(shù)據(jù)庫(kù)的互連性 

  目前,互聯(lián)網(wǎng)上最大的資源殺手當(dāng)非在線數(shù)據(jù)庫(kù)(online databases)和電子商務(wù)(e-commerce)等應(yīng)用莫屬。提供web功能的數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器近年來(lái)飛速增長(zhǎng),顯示出強(qiáng)勁的發(fā)展勢(shì)頭。從性能 的角度來(lái)看,在線數(shù)據(jù)庫(kù)(基于Oracle、 SQL Server或 Sybase等)及應(yīng)用如日中升,迫使人們更加關(guān)注服務(wù)器的性能狀況。對(duì)于大型網(wǎng)站來(lái)說(shuō),高負(fù)載的HTTP傳輸和數(shù)據(jù)庫(kù)處理事務(wù)互相搶占資源,并最終可能 導(dǎo)致服務(wù)器在極短的時(shí)間內(nèi)崩潰或者變得慢如蝸牛。在這種情況下,推薦您使用專(zhuān)門(mén)的后臺(tái)運(yùn)行的數(shù)據(jù)庫(kù)服務(wù)器(當(dāng)然也是出于安全的考慮)以及前臺(tái)處理的 HTTP服務(wù)器。 



  眾所周知,究竟選用哪種不同類(lèi)型的傳輸介質(zhì),必須根據(jù)預(yù)期的負(fù)載類(lèi)型來(lái)決定。因此,從這點(diǎn)來(lái)看,你應(yīng)該可以粗略地決定究竟需要采用哪種硬件。 盡管不同的平臺(tái)提供不同的性能水平,各個(gè)平臺(tái)的性能之間還是存在一定交迭的,因此,你可以在對(duì)需要采用多少數(shù)量的硬件作任何決定之前,初步選擇一下那些你 使用起來(lái)最覺(jué)舒適的平臺(tái)。 

  下文將那些與特定網(wǎng)站(這類(lèi)網(wǎng)站一般只采用標(biāo)準(zhǔn)的傳輸介質(zhì)和內(nèi)容類(lèi)型,如靜態(tài)HTML、服務(wù)器解析文檔以及從少量到數(shù)量適中的CGI程序)相關(guān)聯(lián)的瓶頸根據(jù)其對(duì)系統(tǒng)的影響程度逐個(gè)列出。 

  網(wǎng)絡(luò)帶寬 

  吞吐量及高峰傳輸速率或突發(fā)傳輸速率(Spikes/Burst Transfer Rates) 

  內(nèi)存 

  Webserver客戶(hù)端和文件系統(tǒng)緩沖區(qū)(Filesystem Cache)占用的活動(dòng)內(nèi)存 

  存儲(chǔ) 

  訪問(wèn)時(shí)間,跨多硬盤(pán)訪問(wèn)的效率 

  中央處理器 

  在多進(jìn)程或多線程環(huán)境下的性能 

  網(wǎng)絡(luò)帶寬 

  可用的帶寬對(duì)于那些主要由靜態(tài)頁(yè)面構(gòu)成的站點(diǎn)來(lái)說(shuō),也許是最關(guān)鍵的因素,但問(wèn)題往往并不如你想象的那么簡(jiǎn)單。撇開(kāi)網(wǎng)絡(luò)的吞吐總量以及響應(yīng)速度 不講,在高負(fù)載的環(huán)境下,系統(tǒng)的突發(fā)傳輸速率是非常重要的。盡管通過(guò)單一的T1或T3傳輸速率提供的總帶寬對(duì)一個(gè)特定的站點(diǎn)而言也許綽綽有余,但其最大的 傳輸速率(T1下為1.5mbit/s,T3下為4.5mbit/s)也可能不足以應(yīng)付系統(tǒng)的高峰傳輸負(fù)載。在用戶(hù)訪問(wèn)的高峰期,某些站點(diǎn)也許根本無(wú)法訪 問(wèn)。這樣的站點(diǎn)在用戶(hù)企圖訪問(wèn)它時(shí)顯得慢如蝸牛,而服務(wù)器自身卻仍舊非??臻e。這樣看來(lái),要成功搭建一個(gè)web主機(jī),考慮清楚你到底需要多大的帶寬顯然是 非常重要的。 

  內(nèi)存 

  可用的物理內(nèi)存是另外一個(gè)重要因素,這是因?yàn)閷?duì)內(nèi)存的占用率會(huì)直接隨著對(duì)服務(wù)器請(qǐng)求數(shù)量的增加而增加。計(jì)算分配給每個(gè)并發(fā)用戶(hù)的內(nèi)存數(shù)量以及 并發(fā)用戶(hù)的平均數(shù)量,只是你要考慮的事情中的一部分。文件緩沖區(qū)也是非常重要的,因?yàn)樗軐⒋疟P(pán)的使用頻率降到最低程度,明顯加快事務(wù)處理的總體速度。 

  對(duì)內(nèi)存的需求很大程度上取決于使用在特定服務(wù)器上的軟件的具體情況。除了操作系統(tǒng)的管理能力和文件系統(tǒng)的緩沖區(qū)大小之外,你還需要將你所選擇的web服務(wù)器軟件對(duì)硬件的特殊要求調(diào)查清楚。 

  存儲(chǔ) 

  和存儲(chǔ)介質(zhì)有關(guān)的讀寫(xiě)時(shí)間指標(biāo)也是非常重要的,對(duì)大型文件庫(kù)和數(shù)據(jù)庫(kù)(文件緩沖區(qū)的作用在這明顯削弱)而言,尤其如此。在多設(shè)備協(xié)同工作的條 件下,Web服務(wù)器的磁盤(pán)系統(tǒng)必須有卓越的性能,推薦采用SCSI硬盤(pán)或RAID陣列。對(duì)于那些主要放開(kāi)了“只讀”權(quán)限的站點(diǎn)(用戶(hù)不能上傳數(shù) 據(jù)),RAID是最佳的解決方案。這是因?yàn)?,在RAID陣列中存在多個(gè)硬盤(pán)磁頭,能明顯提升讀取操作的數(shù)據(jù)吞吐量。 

  中央處理器 

  對(duì)于那些主要由靜態(tài)頁(yè)面構(gòu)成的站點(diǎn)來(lái)說(shuō),CPU只是你需要考慮的最次要的一個(gè)因素。這是因?yàn)?,即便是一個(gè)非常低端的PC電腦也能充分發(fā)掘T1 通道的傳輸速率。但是,在使用了包括CGI、服務(wù)器解析文檔或提供web訪問(wèn)方式的數(shù)據(jù)庫(kù)的情況下,你需要更多地關(guān)注CPU的性能。在這種場(chǎng)合下,將事務(wù) 處理速度和并發(fā)處理性能兩個(gè)概念分清楚是很重要的。如果你需要向一個(gè)較小的用戶(hù)群體提供某種對(duì)CPU依賴(lài)很大的應(yīng)用服務(wù),那么,一個(gè)高速的單CPU可能是 最有用的。但是,如果存在多個(gè)用戶(hù)同時(shí)對(duì)大批量的頁(yè)面提出訪問(wèn)請(qǐng)求,那么在這種情況下(尤其在這些頁(yè)面均以獨(dú)立的進(jìn)程或線程模式打開(kāi)情況下),多CPU系 統(tǒng)(即使這些CPU的速度都很慢)也許更為管用。 

分析服務(wù)器的工作模式 

  盡管在市場(chǎng)上可以購(gòu)買(mǎi)到各式各樣的Web服務(wù)器,但如果單就并發(fā)訪問(wèn)的處理方式來(lái)看,所有的服務(wù)器大體可以分成基本的四類(lèi)。 

  Single-threaded模式(單線程模式) 

  非常有效,可充分提高資源效率(對(duì)稱(chēng)多處理機(jī)除外) 

  Fork模式(分叉模式) 

  每個(gè)請(qǐng)求的成本高,性能差,有良好的對(duì)稱(chēng)多處理特性 

  Pre-Fork模式(預(yù)分叉模式) 

  良好的對(duì)稱(chēng)多處理特性,響應(yīng)速度通常比較快 

  Threaded模式(線程模式) 

  效率高的多處理特性,響應(yīng)快   

  Single-Threaded模式 

  single-threaded服務(wù)器通常采用選擇的方法在單個(gè)進(jìn)程中處理所有的訪問(wèn)請(qǐng)求。對(duì)只配置了一個(gè)處理器的機(jī)器來(lái)說(shuō),這類(lèi)服務(wù)器是非常高效的。但是,它并不能通過(guò)增加額外的處理器來(lái)相應(yīng)地提升性能。 

  在這次模擬測(cè)試中,我們?cè)趛軸標(biāo)注的請(qǐng)求數(shù)量最大值為100條/秒,這是為了方便評(píng)估single-threaded模式下的性能。模擬的服 務(wù)器每秒處理的請(qǐng)求數(shù)量維持在70條,即便如此,這已和實(shí)際使用情況非常相近。我們發(fā)現(xiàn),在該環(huán)境下,當(dāng)處理較輕的負(fù)載時(shí),single- threaded模式是非常高效的,響應(yīng)速度也非常迅捷。隨著負(fù)載的增加,我們又發(fā)現(xiàn),服務(wù)器的性能表現(xiàn)每況愈下,這種狀況只能通過(guò)搭配更好的硬件才能改 善。 

  Fork模式 

  通常來(lái)說(shuō),通過(guò)追加進(jìn)程來(lái)處理每個(gè)請(qǐng)求的服務(wù)器由于多了一個(gè)增加新進(jìn)程的環(huán)節(jié),效率比較低下,響應(yīng)速度也比較慢。由于通過(guò)這種方式在應(yīng)付大批量的客戶(hù)端請(qǐng)求時(shí)會(huì)過(guò)多地消耗資源,顯然,隨著請(qǐng)求數(shù)量和頻率的增加,系統(tǒng)的性能將逐步下降。 
   
  fork模式下的測(cè)試結(jié)果和single-threaded模式下的測(cè)試結(jié)果非常相似。不同的是,由于每一個(gè)新進(jìn)程的成本較高,相對(duì)于single-threaded服務(wù)器來(lái)說(shuō),這種模式下的管理維護(hù)成本會(huì)隨著http服務(wù)器進(jìn)程的增加而增加。 

  Pre-Fork模式 

  pre-fork服務(wù)器和fork服務(wù)器相似,也是通過(guò)一個(gè)單獨(dú)的進(jìn)程來(lái)處理每條請(qǐng)求。但是,不同的是,pre-fork服務(wù)器會(huì)通過(guò)預(yù)先開(kāi) 啟大量的進(jìn)程,等待并處理接到的請(qǐng)求。由于采用了這種方式來(lái)開(kāi)啟進(jìn)程,服務(wù)器并不需要等待新的進(jìn)程啟動(dòng)而消耗時(shí)間,因而能夠以更快的速度應(yīng)付多用戶(hù)請(qǐng)求。 另外,pre-fork服務(wù)器在遇到極大的高峰負(fù)載時(shí)仍能保持良好的性能狀態(tài)。這是因?yàn)椴还苁裁磿r(shí)候,只要預(yù)先設(shè)定的所有進(jìn)程都已被用來(lái)處理請(qǐng)求時(shí),服務(wù) 器仍可追加額外的進(jìn)程。 

  pre-fork服務(wù)器相當(dāng)獨(dú)特的運(yùn)行狀態(tài)曲線。和先前提到的fork模式類(lèi)似的是,pre-fork服務(wù)器也是通過(guò)獨(dú)立的http服務(wù)器進(jìn) 程來(lái)處理每一個(gè)請(qǐng)求,但是,和fork服務(wù)器不同的是,pre-fork服務(wù)器會(huì)隨著請(qǐng)求數(shù)量的增加而啟動(dòng)若干新的進(jìn)程。這種方法的優(yōu)點(diǎn)是,能在對(duì) http通訊保持一定響應(yīng)能力的同時(shí),給服務(wù)器提供少許的“喘息”時(shí)間。缺點(diǎn)是,當(dāng)遇到高峰負(fù)載時(shí),由于要啟動(dòng)新的服務(wù)器進(jìn)程,不可避免地會(huì)帶來(lái)響應(yīng)的延 遲。 

  Threaded模式 

  threaded服務(wù)器和http服務(wù)器(對(duì)每一請(qǐng)求都必須生成新的進(jìn)程來(lái)處理)有些類(lèi)似。但是,它由于采用了線程技術(shù),一般能以更低的管理成本取得用進(jìn)程來(lái)處理請(qǐng)求的效果。 
   
  threaded服務(wù)器和通過(guò)生成新的進(jìn)程來(lái)處理請(qǐng)求的服務(wù)器差別不大,只是它生成的是線程而不是進(jìn)程,因此,它對(duì)資源的依賴(lài)性也比較小。 



  目前世界上最流行的Web服務(wù)器非Apache莫屬。它采用的是Pre-Fork模式。讓我們看看它是怎么工作的。 

  Apache的Pre-Fork服務(wù)器設(shè)計(jì)的原理是:當(dāng)閑置的服務(wù)器進(jìn)程數(shù)量小于用戶(hù)預(yù)設(shè)的閥值時(shí)就啟動(dòng)額外的進(jìn)程。另一用戶(hù)設(shè)定的變量則決定空閑的服務(wù)器進(jìn)程的最大數(shù)量,同時(shí),如果實(shí)際閑置的進(jìn)程數(shù)量超過(guò)這個(gè)最大值,服務(wù)器就會(huì)將空閑的進(jìn)程關(guān)閉。 

  為了順利完成以下的模擬測(cè)試,我們先假定以下幾個(gè)條件: 

  1、空閑的服務(wù)器進(jìn)程數(shù)量的最小值為5 

  2、空閑的服務(wù)器進(jìn)程數(shù)量的最大值為10 

  3、服務(wù)器進(jìn)程數(shù)量的初始值為5 
   
  當(dāng)Pre-Fork服務(wù)器在一個(gè)“無(wú)限機(jī)”上的運(yùn)行狀態(tài)(這臺(tái)機(jī)器擁有無(wú)窮大的物理內(nèi)存和CPU時(shí)間,我們姑且假定它是真實(shí)存在的)。 Pre-Fork 服務(wù)器在遇到高峰負(fù)載時(shí)產(chǎn)生的“步階”(stair-step)效應(yīng)。實(shí)際上,在這種情況下,由于之前假定Pre-Fork服務(wù)器擁有無(wú)限的資源,所以它 的性能表現(xiàn)非常令人滿(mǎn)意。但是,隨著時(shí)間的推移,實(shí)際性能卻能通過(guò)修改基于平均負(fù)載活動(dòng)的服務(wù)器進(jìn)程數(shù)量的最大和最小值而發(fā)生變化。 

  當(dāng)然,這臺(tái)擁有無(wú)限資源的機(jī)器顯然是不存在的,因此,讓我們?cè)谧鲆粋€(gè)比較真實(shí)一些的模擬測(cè)試。這次,我們要把物理內(nèi)存的使用情況考慮進(jìn)去。姑且作以下假定: 

  1、空閑的服務(wù)器進(jìn)程數(shù)量的最小值為5 

  2、空閑的服務(wù)器進(jìn)程數(shù)量的最大值為10 

  3、服務(wù)器進(jìn)程數(shù)量的初始值為5 

  4、這臺(tái)機(jī)器配置了256 MB的物理內(nèi)存。將操作系統(tǒng)和文件系統(tǒng)緩沖區(qū)因素考慮進(jìn)去的話,我們假定其中有196MB的內(nèi)存單獨(dú)供web服務(wù)器使用。 

  5、每一web服務(wù)器進(jìn)程消耗1.5 MB的物理內(nèi)存 

  6、不考慮CPU和硬盤(pán)因素,同時(shí),我們假定一旦機(jī)器的內(nèi)存耗竭,就無(wú)法再處理額外的訪問(wèn)請(qǐng)求。 

  這次測(cè)試表明,在機(jī)器所有物理內(nèi)存被龐大的高峰負(fù)載消耗殆盡之前,我們這臺(tái)更真實(shí)的服務(wù)器的性能表現(xiàn)和那臺(tái)擁有無(wú)限資源的理想服務(wù)器是完全一 樣的??捎玫奈锢韮?nèi)存數(shù)量(單位:MB)用紅線在圖中標(biāo)示,并發(fā)請(qǐng)求數(shù)量達(dá)到130條時(shí),內(nèi)存就被耗光。這使得320個(gè)請(qǐng)求處于未響應(yīng)狀態(tài)。如果我們將 CPU的使用率和磁盤(pán)活動(dòng)等因素考慮進(jìn)去的話,這些數(shù)字將會(huì)更小,機(jī)器為應(yīng)付缺少可用內(nèi)存的狀況而忙于將數(shù)據(jù)在內(nèi)存與硬盤(pán)之間交換,這顯然會(huì)降低系統(tǒng)的性 能。 
   


  正如你所知道的,影響web服務(wù)器性能的因素?cái)?shù)之不盡,要限制這些因素發(fā)揮作用,只能充分發(fā)揮人們的創(chuàng)造性思維。用來(lái)發(fā)布不同類(lèi)型頁(yè)面的 Web系統(tǒng)對(duì)硬件的要求也是不一樣的。本文只是粗略地介紹了搭建一個(gè)Web服務(wù)器要考慮的因素,我希望它能幫助你更好地去理解這些系統(tǒng)要求。在這個(gè)基礎(chǔ)之 上,今后,我們還將發(fā)表一些文章,介紹一下在Web服務(wù)器環(huán)境下的Athlon系統(tǒng)、對(duì)稱(chēng)多處理(SMP)系統(tǒng)以及它們?cè)赪eb環(huán)境下的性能表現(xiàn)。
分類(lèi): Web Server

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多