發(fā)布時(shí)間:2020-07-17
大家都知道性能測(cè)試中,性能指標(biāo)包括系統(tǒng)吞吐量,并發(fā)處理能力,系統(tǒng)穩(wěn)定性,響應(yīng)延遲等。性能測(cè)試就是為了如果發(fā)現(xiàn)有不滿足要求的地方,需要定位出問題所在,并給出解決方案。今天小編來(lái)給大家說(shuō)說(shuō)接口壓力測(cè)試的相關(guān)內(nèi)容。
為什么要做接口壓力測(cè)試?
1.清楚自己所提供的接口性能是多少;
2.判斷出系統(tǒng)可能存在的問題(代碼,DB,cache,系統(tǒng)配置,容量等),提前解決;
3.為設(shè)置接口的限流/熔斷做參考;
接口壓力測(cè)試的局限性
接口壓力測(cè)試只注重單業(yè)務(wù)的接口性能,進(jìn)行壓測(cè)的時(shí)候,只關(guān)注個(gè)別接口的性能。
接口大部分時(shí)間是在線下進(jìn)行,可能線上線下機(jī)器配置不一樣,而且線上同時(shí)在進(jìn)行著各種不同的業(yè)務(wù)。
因此在線下進(jìn)行接口壓力測(cè)試的結(jié)果,只能作為線上配置的一個(gè)參考值。
如何做接口壓力測(cè)試?
通常使用 Jmeter ,loadRunner,PerformanceRunner 等進(jìn)行壓力測(cè)試。
如何確定并發(fā)數(shù):
可以通過(guò)嘗試的方式。第一次壓測(cè)的時(shí)候,可以設(shè)置自己預(yù)期接口需要達(dá)到的并發(fā)數(shù),進(jìn)行壓力測(cè)試。然后通過(guò)二分法進(jìn)行調(diào)整。
舉例:如果期望的并發(fā)數(shù)是512 ,第一次壓測(cè)并發(fā)數(shù)設(shè)置為512 ,如果系統(tǒng)沒有壓力,第二次并發(fā)就嘗試設(shè)置為1024。如果系統(tǒng)有壓力,下次就設(shè)置為256。通過(guò)逐漸嘗試的方式,找出當(dāng)前接口的并發(fā)閾值。
如何確定總請(qǐng)求次數(shù):
有時(shí)候單純的通過(guò)并發(fā)數(shù)并不能完全發(fā)現(xiàn)系統(tǒng)的壓力狀況,因?yàn)椴l(fā)數(shù)只能測(cè)出系統(tǒng)的處理能力。
但是有時(shí)隨著長(zhǎng)時(shí)間的調(diào)用,系統(tǒng)可能會(huì)出現(xiàn)其他問題。比如:隨著數(shù)據(jù)量的增多,存儲(chǔ)磁盤滿了、內(nèi)存緩存用光,緩存服務(wù)使用磁盤緩存而拖慢系統(tǒng)等情況。
為了避免這種情況,可以嘗試用現(xiàn)有線上業(yè)務(wù)每天產(chǎn)生的數(shù)量乘以一定的天數(shù)(天數(shù)的大小視業(yè)務(wù)的具體情況而定,推薦180天以上),作為接口壓力測(cè)試的總請(qǐng)求次數(shù)。
接口壓力測(cè)試數(shù)據(jù)的選?。?/strong>
通常隨機(jī)選擇數(shù)據(jù)。但是要注意重復(fù)進(jìn)行壓力測(cè)試對(duì)性能的影響。
比如:
第一次壓測(cè)的 Id 是從2500W 到2600W 之間選擇的,下次用同樣的 Id 范圍做壓測(cè)的時(shí)候,如果接口實(shí)現(xiàn)中有緩存,則會(huì)很大程度影響壓力測(cè)試的結(jié)果,對(duì)壓力測(cè)試的解讀時(shí)候,要考慮到這個(gè)因素。
另外,使用不存在的 Id 去進(jìn)行壓測(cè),結(jié)果并沒有太大意義。
七、壓力測(cè)試報(bào)告應(yīng)該包含哪些結(jié)果
接口壓力測(cè)試結(jié)果
服務(wù)器壓力
每次接口壓力測(cè)試時(shí),接口所在服務(wù)的服務(wù)器 cpu/jvm 使用率歷史記錄,jvm堆大小,響應(yīng)時(shí)長(zhǎng)圖 (借助 pinpoint 查看),cpu load 值(top 命令),gc 信息等。
對(duì)于接口壓力測(cè)試結(jié)果:
關(guān)注 響應(yīng)時(shí)間是否符合要求,響應(yīng)時(shí)間(前99%) 是不是在可允許的范圍內(nèi)。最大值是多少,是否可以容忍。 通常來(lái)說(shuō),錯(cuò)誤百分比應(yīng)該為0。
對(duì)于服務(wù)器壓力:
看 cpu 使用率是否在可接受范圍內(nèi),jvm 堆大小是否變化頻繁,是否有 fullGC。Young GC 耗時(shí),CPU load值是否在可接受范圍內(nèi)。 響應(yīng)時(shí)長(zhǎng)圖是否平滑(如果有毛刺現(xiàn)象,需要找出原因)。
如何根據(jù)測(cè)試結(jié)果定位性能問題
1.響應(yīng)時(shí)間不符合要求:通過(guò) pinpoint 觀察調(diào)用鏈,找出耗時(shí)比較長(zhǎng)的步驟,進(jìn)行優(yōu)化;
2.并發(fā)數(shù)達(dá)不到要求,可以從以下幾個(gè)方面進(jìn)行考慮:
a 是否發(fā)生系統(tǒng)依賴資源爭(zhēng)用(比如:數(shù)據(jù)庫(kù)連接,業(yè)務(wù)處理線程數(shù)等)
b 業(yè)務(wù)流程/代碼性能是否可以優(yōu)化
c 在運(yùn)行的過(guò)程中是否頻繁 GC
3. CPU 使用率過(guò)高:
a 在運(yùn)行的過(guò)程中是否頻繁 GC
b是否發(fā)生過(guò)多的線程切換
c 程序中是否有比較耗 cpu 的代碼
修復(fù)性能問題
除了只可能在極端壓力測(cè)試情況下會(huì)發(fā)生的性能問題,并且修復(fù)代價(jià)過(guò)大的問題可以不進(jìn)行修復(fù)修復(fù)性能問題
除了只可能在極端壓力測(cè)試情況下會(huì)發(fā)生的性能問題,并且修復(fù)代價(jià)過(guò)大的問題可以不進(jìn)行修復(fù),但是要在壓力測(cè)試報(bào)告中體現(xiàn)出來(lái)此問題,以及解決方案),其他問題都必須進(jìn)行修復(fù)。
如果沒有專門的接口壓力測(cè)試環(huán)境,記得做完接口壓力測(cè)試之后,將測(cè)試數(shù)據(jù)清除(緩存,數(shù)據(jù)庫(kù),消息中間件中未消費(fèi)完畢的消息 等)。
推薦閱讀:
全鏈路性能需求分析的要點(diǎn)是什么?和傳統(tǒng)線下性能測(cè)試有什么區(qū)別
軟件測(cè)試中服務(wù)器穩(wěn)定性測(cè)試方法有哪些?
有哪些SQL性能測(cè)試工具?SQL性能測(cè)試工具的主要特點(diǎn)
性能測(cè)試和并發(fā)壓力的關(guān)系 性能測(cè)試中怎么設(shè)置并發(fā)數(shù)?
什么是WebSocket?有哪些支持WebSocket協(xié)議的壓力測(cè)試工具?
性能壓測(cè)概念及性能壓測(cè)工具對(duì)比選型
企業(yè)為什么需要做全鏈路壓測(cè)?全鏈路壓測(cè)能解決什么問題?
電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報(bào)價(jià))。
您的信息已成功提交!
我們的客服人員稍后會(huì)與您聯(lián)系