一摧冀、吞吐率
我們一般使用單位時間內(nèi)服務(wù)器處理的請求數(shù)來描述其并發(fā)處理能力。稱之為吞吐率(Throughput)系宫,單位是 “req/s”索昂。吞吐率特指Web服務(wù)器單位時間內(nèi)處理的請求數(shù)。
比如Apache 的 mod_status 模塊提供的如下統(tǒng)計
另一種描述扩借,吞吐率是楼镐,單位時間內(nèi)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量,也可以指單位時間內(nèi)處理客戶請求數(shù)量往枷。它是衡量網(wǎng)絡(luò)性能的重要指標(biāo)框产。通常情況下,吞吐率“字節(jié)數(shù)/秒”來衡量错洁。當(dāng)然你也可以用“請求數(shù)/秒”和“頁面數(shù)/秒”來衡量秉宿。其實(shí)不管一個請求還是一個頁面,它的本質(zhì)都是在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)屯碴,那么用來表述數(shù)據(jù)的單位就是字節(jié)數(shù)描睦。
二、吞吐量
吞吐量导而,是指在一次性能測試過程中網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量的總和忱叭。
對于交互式應(yīng)用來說,吞吐量指標(biāo)反映的是服務(wù)器承受的壓力今艺,在容量規(guī)劃的測試中韵丑,吞吐量是一個重點(diǎn)關(guān)注的指標(biāo),因?yàn)樗軌蛘f明系統(tǒng)級別的負(fù)載能力虚缎,另外撵彻,在性能調(diào)優(yōu)過程中,吞吐量指標(biāo)也有重要的價值实牡。如一個大型工廠陌僵,他們的生產(chǎn)效率與生產(chǎn)速度很快,一天生產(chǎn)10W噸的貨物创坞,結(jié)果工廠的運(yùn)輸能力不行碗短,就兩輛小型三輪車一天拉2噸的貨物,比喻有些夸張题涨,但我想說明的是這個運(yùn)輸能力是整個系統(tǒng)的瓶頸偎谁。
提示奔坟,用吞吐量來衡量一個系統(tǒng)的輸出能力是極其不準(zhǔn)確的,用個最簡單的例子說明搭盾,一個水龍頭開一天一夜,流出10噸水婉支;10個水龍頭開1秒鐘鸯隅,流出0.1噸水。當(dāng)然是一個水龍頭的吞吐量大向挖。你能說1個水龍頭的出水能力是10個水龍頭的強(qiáng)蝌以?所以,我們要加單位時間何之,看誰1秒鐘的出水量大跟畅。這就是吞吐率。
三溶推、事務(wù)徊件,TPS(Transaction Per second)
就是用戶某一步或幾步操作的集合。不過蒜危,我們要保證它有一個完整意義虱痕。比如用戶對某一個頁面的一次請求,用戶對某系統(tǒng)的一次登錄辐赞,淘寶用戶對商品的一次確認(rèn)支付過程部翘。這些我們都可以看作一個事務(wù)。那么如何衡量服務(wù)器對事務(wù)的處理能力响委。又引出一個概念----TPS
每秒鐘系統(tǒng)能夠處理事務(wù)或交易的數(shù)量新思,它是衡量系統(tǒng)處理能力的重要指標(biāo)。
點(diǎn)擊率可以看做是TPS的一種特定情況赘风。點(diǎn)擊率更能體現(xiàn)用戶端對服務(wù)器的壓力夹囚。TPS更能體現(xiàn)服務(wù)器對客戶請求的處理能力。
每秒鐘用戶向web服務(wù)器提交的HTTP請求數(shù)邀窃。這個指標(biāo)是web 應(yīng)用特有的一個指標(biāo)崔兴;web應(yīng)用是“請求-響應(yīng)”模式,用戶發(fā)一個申請蛔翅,服務(wù)器就要處理一次敲茄,所以點(diǎn)擊是web應(yīng)用能夠處理的交易的最小單位。如果把每次點(diǎn)擊定義為一個交易山析,點(diǎn)擊率和TPS就是一個概念堰燎。容易看出,點(diǎn)擊率越大笋轨。對服務(wù)器的壓力也越大秆剪,點(diǎn)擊率只是一個性能參考指標(biāo)赊淑,重要的是分析點(diǎn)擊時產(chǎn)生的影響。
需要注意的是仅讽,這里的點(diǎn)擊不是指鼠標(biāo)的一次“單擊”操作陶缺,因?yàn)橐淮巍皢螕簟辈僮髦校蛻舳丝赡芟蚍?wù)器發(fā)現(xiàn)多個HTTP請求洁灵。
四饱岸、吞吐量、吞吐率的意義
- 吞吐量的限制是性能瓶頸的一種重要表現(xiàn)形式徽千,因此苫费,有針對地對吞吐量設(shè)計測試,可以協(xié)助盡快定位到性能冰晶所在的位置
- 80%系統(tǒng)的性能瓶頸都是由吞吐量制約
- 并發(fā)用戶和吞吐量瓶頸之間存在一定的關(guān)聯(lián)
- 通過不斷增加并發(fā)用戶數(shù)和吞吐量觀察系統(tǒng)的性能瓶頸双抽。然后百框,從網(wǎng)絡(luò)、數(shù)據(jù)庫牍汹、應(yīng)用服務(wù)器和代碼本身4個環(huán)節(jié)確定系統(tǒng)的性能瓶頸铐维。
五、吞吐率和壓力測試
單從定義來看慎菲,吞吐率描述了服務(wù)器在實(shí)際運(yùn)行期間單位時間內(nèi)處理的請求數(shù)方椎,然而,我們更加關(guān)心的是服務(wù)器并發(fā)處理能力的上限
钧嘶,也就是單位時間內(nèi)服務(wù)器能夠處理的最大請求數(shù)棠众,即最大吞吐率。
所以我們普遍使用“壓力測試”的方法有决,通過模擬足夠多數(shù)目的并發(fā)用戶闸拿,分別持續(xù)發(fā)送一定的HTTP請求,并統(tǒng)計測試持續(xù)的總時間书幕,計算出基于這種“壓力”下的吞吐率新荤,即為一個平均計算值
!台汇!注意
在Web服務(wù)器的實(shí)際工作中苛骨,其處理的HTTP請求通常包括對很多不同資源的請求,也就是請求不同的URL苟呐,
比如這些請求有的是獲取圖片痒芝,有的是獲取動態(tài)內(nèi)容,顯然服務(wù)器處理這些請求所花費(fèi)的時間各不相同牵素,而這些請求的不同時間組成比例又是不確定的严衬。這就是實(shí)際情況下的吞吐率。所以笆呆,我們 對于同一個特定有代表性的請求進(jìn)行壓力測試请琳,然后對多個請求的吞吐率按照比例計算加權(quán)平均值粱挡。
Web服務(wù)器并發(fā)能力強(qiáng)弱的關(guān)鍵便是在于如何計算針對不同的請求性質(zhì)來設(shè)計最優(yōu)并發(fā)策略。在一定程度上使得Web服務(wù)器的性能無法充分發(fā)揮俄精,這很容易理解询筏,就像銀行對不同業(yè)務(wù)設(shè)立不同的窗口一樣,這些窗口的服務(wù)員分別熟悉自己的窗口業(yè)務(wù)竖慧∠犹祝可以未不同的客戶分別快速辦理業(yè)務(wù),但是如果讓這些窗口都可以辦理所有業(yè)務(wù)测蘑,也就是客戶可以去任何窗口辦理任何業(yè)務(wù),那會是怎么樣呢康二?沒有幾個銀行業(yè)務(wù)員會對所有業(yè)務(wù)都輕車熟路碳胳,這樣勢必會影響到整體的業(yè)務(wù)辦理速度。
六沫勿、壓力測試的前提
吞吐率性能測試的前提
- 并發(fā)用戶數(shù)
- 總請求數(shù)
- 請求資源描述
壓力測試的描述一般包括兩個部分挨约,即并發(fā)用戶數(shù)和總請求數(shù),也就是模擬多少用戶同時向服務(wù)器發(fā)送多少請求产雹。
請求性質(zhì)則是對請求的URL所代表的資源的描述诫惭,比如1KB大小的靜態(tài)文件,或者包含10次數(shù)據(jù)庫查詢的動態(tài)內(nèi)容等蔓挖。
1夕土、 并發(fā)用戶數(shù)
并發(fā)用戶數(shù)就是指在某一時刻同時向服務(wù)器發(fā)送請求的用戶總數(shù)。
假如100個用戶同時向服務(wù)器分別進(jìn)行10次請求瘟判,與1個用戶向服務(wù)器連續(xù)進(jìn)行1000次請求怨绣。兩個的效果一樣么?
一個用戶向服務(wù)器連續(xù)進(jìn)行1000次請求的過程中拷获,任何時刻服務(wù)器的網(wǎng)卡接受緩存區(qū)中只有來自該用戶的1個請求篮撑,而100個用戶同時向服務(wù)器分別進(jìn)行10次請求的過程中,服務(wù)器網(wǎng)卡接收緩沖區(qū)中最多有100個等待處理的請求匆瓜,顯然這時候服務(wù)器的壓力更大赢笨。
經(jīng)常有人說某個Web服務(wù)器能支持多少并發(fā)數(shù),除此之外沒有任何上下文驮吱,這讓很多人摸不著頭腦茧妒,人們常常把并發(fā)用戶數(shù)和吞吐率混淆,他們并不是一回事左冬。
一個服務(wù)器最多支持多少并發(fā)用戶數(shù)呢嘶伟?
我們可以說,這個柜臺支持的最大并發(fā)數(shù)為10又碌,因?yàn)榍『迷谶@個并發(fā)數(shù)下九昧,柜臺業(yè)務(wù)開展的非常成功绊袋。顧客們都對服務(wù)時間非常滿意,而此時代表業(yè)務(wù)辦理次數(shù)的柜臺吞吐率也比較高铸鹰,商場和顧客們實(shí)現(xiàn)雙贏癌别。
可見,通常所講的最大并發(fā)數(shù)是有一定利益前提的蹋笼,那就是服務(wù)器和用戶雙方所期待的最大收益展姐,服務(wù)器希望支持高并發(fā)數(shù)及高吞吐率,而用戶不管那么多剖毯,只希望等待較少的時間圾笨,或者得到更快的下載速度。
所以得出最大并發(fā)數(shù)的意義逊谋,在于了解服務(wù)器的承載能力擂达,并且結(jié)合用戶規(guī)模考慮適當(dāng)?shù)臄U(kuò)展方案胶滋。
對于同一域名下URL的并發(fā)下載數(shù)是有最大限制的板鬓,具體限制視瀏覽器的不同而不同。
一個真實(shí)的用戶可能會給服務(wù)器帶來兩個或更多的并發(fā)用戶的壓力究恤,一些高明的用戶還可以通過一些方法來修改瀏覽器的并發(fā)數(shù)限制俭令。
2、請求等待時間
- 用戶平均請求等待時間
- 服務(wù)器平均請求處理時間
用戶平均請求等待時間主要用戶衡量服務(wù)器在一定并發(fā)用戶數(shù)的情況下部宿,對于單個用戶的服務(wù)質(zhì)量
服務(wù)器平均請求處理時間與前者相比抄腔,則用戶衡量服務(wù)器的整體服務(wù)質(zhì)量,它其實(shí)就是吞吐率的倒數(shù)理张。
七妓柜、壓力測試
Apache 附帶的ab,ab可以直接在web服務(wù)器本地發(fā)起測試請求涯穷。
1棍掐、吞吐率隨并發(fā)用戶數(shù)變化的曲線圖
2、服務(wù)器平均請求處理時間隨并發(fā)用戶數(shù)變化的曲線圖
當(dāng)并發(fā)用戶數(shù)超過150 之后拷况,請求的平均等待時間大幅度增加作煌,當(dāng)并發(fā)用戶達(dá)到200后,等待時間開始急劇增加赚瘦。
3粟誓、用戶平均請求等待時間隨并發(fā)用戶數(shù)變化的曲線圖
八、總結(jié)
針對起意,吞吐量鹰服,吞吐率,TPS的測試,都需要指明單位時間悲酷。
以上測試忽略服務(wù)器硬件配置套菜,所以性能測試結(jié)果也不側(cè)重于它的絕對值意義,我們的目的是探討如何測量性能以及如何根據(jù)不同的場景來優(yōu)化性能设易。
以上測試使用硬件為
CPU: Intel(R) Xeon(R) CPU 1.60GHz
內(nèi)存:4GB
硬盤轉(zhuǎn)速: 15kr/min
以上幾個指標(biāo)的測試逗柴,主要是為了提升服務(wù)器的處理效率,為構(gòu)建高可用的Web站點(diǎn)做準(zhǔn)備顿肺。
九戏溺、下期內(nèi)容
影響 吞吐量,吞吐率屠尊,TPS指標(biāo)的因素旷祸,除了服務(wù)器的硬件配置,就剩下并發(fā)策略了讼昆。
簡單地說托享,并發(fā)策略的設(shè)計就是在服務(wù)器同時處理較多請求的時候,如何合理協(xié)調(diào)并充分利用CPU計算和I/O請求控淡,使其在較大并發(fā)用戶數(shù)的情況下提供較高的吞吐率
并不存在一個對所有性質(zhì)的請求都高效的并發(fā)策略
如需知道更多嫌吠,請聽下回分解止潘。
參考: