评估服务基础性能应该参考那些指标?
? ? ? ? 當(dāng)談到網(wǎng)絡(luò)服務(wù)性能的時候,很多人都會采用一些單一性的指標(biāo)數(shù)據(jù)作為性能參考,如支持多少在線,能跑到多少帶寬等;實際上這些單一性的指標(biāo)數(shù)據(jù)并不能反映服務(wù)的基礎(chǔ)性能,畢竟應(yīng)用場景是多樣性的;那更好判斷一個服務(wù)的基礎(chǔ)性能需要符合那些要求呢?接下通過各種場景測試來證實一下,服務(wù)基礎(chǔ)性能需要關(guān)注那方面的指標(biāo)數(shù)據(jù)。
????????為了可以得到更符合實際的測試結(jié)果,測試環(huán)境采用了10Gb的網(wǎng)絡(luò)環(huán)境,對于一個服務(wù)端程序進(jìn)行多種場景的測試,看一下服務(wù)端在各種單獨指標(biāo)項中性能有著怎樣的表現(xiàn)。順便也可以了解 一下在不講武德的情況下把單一性指標(biāo)如何做得更高來得到一個更有體面的說法。測試方法每個示例采樣2分鐘,看服務(wù)占用CPU資源情況。
在線并發(fā)數(shù)指標(biāo)
????????很多時候都會談到這個指標(biāo)項,簡單來說以服務(wù)支持多少在線交互來對服務(wù)的性能做一個評價。接來分別做1000,10000,100000在線的通訊交互,但不改變其總網(wǎng)絡(luò)讀寫的情況下CPU損耗是怎樣的。
1000連接
10000連接
100000連接
以上是三種不同在線情況的測試,雖然10萬在線在控制發(fā)送有些波動,但總體IO讀寫和帶寬都保持在對應(yīng)的區(qū)間上。從三個測試結(jié)果來看其服務(wù)端的cpu基本沒有太多變化,即使1000和100000差了100倍的連接數(shù)也不會引起cpu資源波動。大量在線到達(dá)某一數(shù)據(jù)量的情況的確是對系統(tǒng)性能產(chǎn)生影響的,主要是對應(yīng)句柄數(shù)量巨大引起系統(tǒng)的管理性能問題。
帶寬指標(biāo)
????????這個指標(biāo)項也經(jīng)常談,通過跑更高帶寬來轉(zhuǎn)化成消息處理,從而來確定服務(wù)可以處理多少消息量來突出服務(wù)性能的好壞。實際上高帶寬是不是就意味著會損耗更高CPU資源呢?接下來測一下2000連接,在不改變IO讀寫量的情況來提高帶寬吞吐看一下CPU資源的變化。
發(fā)送128字節(jié)
發(fā)送4K數(shù)據(jù)
同樣的IO讀寫量,前者跑了70Mb帶寬,后者使用了超過2Gb帶寬;但兩者的CPU資源使用量基本一樣;所以能跑多少帶寬完全取決于測試者基于什么導(dǎo)向來測試。
網(wǎng)絡(luò)IO讀寫
????????說實話很少人在討論網(wǎng)絡(luò)服務(wù)基礎(chǔ)性能的時候會引入這一指標(biāo),畢竟這一指標(biāo)是實打?qū)嵉?#xff0c;在一臺服務(wù)器上這指標(biāo)的支撐量是固定的。它和在線連接數(shù)并發(fā)帶寬沒有一個正比的關(guān)系;簡單來低帶寬也可能出現(xiàn)高IO讀寫應(yīng)用,高并發(fā)在線也可以出現(xiàn)低IO讀寫。文無第一武無第二,上面兩項是文而這一項就是武了!畢竟實際應(yīng)用中普遍都是基于請求響應(yīng)的方式,每個操作都涉及兩到一個或多個網(wǎng)絡(luò)IO寫和讀。
50連接高并發(fā)讀寫(4K)
200連接高并發(fā)讀寫(128字節(jié))
這項測試中雖然都使用了低連接和最后面測試的低帶寬,但在所有測試中服務(wù)端最占資源是這兩項測試,而它們都有著低連接,低帶寬的特性;但同樣有著一個共同的特點是有著大量的IO讀寫,這些IO讀寫量都遠(yuǎn)比之前的測試要高,同樣CPU使用量也是相對提高了。
總結(jié)
? ? ? ? 通過以上的多個測試相信對服務(wù)端的基礎(chǔ)性能應(yīng)用那些指標(biāo)來評估有個一個大體的了解。拋開實際業(yè)務(wù)邏輯網(wǎng)絡(luò)讀寫對整網(wǎng)絡(luò)服務(wù)來說占主要性能開銷,相對于同時在線數(shù)和帶寬這些單一性的指標(biāo)有著更重要的參考性;所以討論這方面的內(nèi)容時一定要制定一個更清晰的基礎(chǔ)準(zhǔn)則才能更好地去判定。
????????回到實際服務(wù)應(yīng)用開發(fā)中思考,既然服務(wù)的網(wǎng)絡(luò)讀寫是這么有限制和損耗資源,那在設(shè)計時候就盡可能合并這方面的工作,在業(yè)務(wù)可接受的情況下合并IO讀寫來提高效率。
? ? ? ? 現(xiàn)有的性能測試已經(jīng)不會把同時在線或能跑多少帶寬這些單一的指標(biāo)用于作為性能測試的參考;在techempower的測試中沒有一項測試是采用數(shù)萬或數(shù)十萬的連接作為測試要求,畢竟這兩項已經(jīng)是外部環(huán)境因素了。
總結(jié)
以上是生活随笔為你收集整理的评估服务基础性能应该参考那些指标?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 理解 redis 中的 集合对象类型
- 下一篇: Magicodes.IE 2.5版本发布
