雙11大促臨近了,整個(gè)9月、10月份都是鏈路review+壓測(cè)+故障演練+預(yù)案演練的節(jié)奏,壓測(cè)作為驗(yàn)證系統(tǒng)性能的一種重要手段,我們對(duì)它的認(rèn)知有哪些誤區(qū)。
服務(wù)端壓測(cè)總結(jié)系列:
服務(wù)端壓測(cè)總結(jié)篇一:如何完整的做一次壓測(cè)
疑惑
就我所在的業(yè)務(wù)來說:壓測(cè)的主要目的是為了檢驗(yàn)系統(tǒng)在日?;蛘叽蟠俚牧髁糠逯灯陂g能夠正常運(yùn)行,保證業(yè)務(wù)順暢無線上問題。
在壓測(cè)前,你需要了解:
- 一、測(cè)試環(huán)境壓測(cè)通過了,生產(chǎn)環(huán)境是否需要壓測(cè)了?
結(jié)論是:要
只要測(cè)試環(huán)境無法100%模擬生產(chǎn)環(huán)境,生產(chǎn)環(huán)境的壓測(cè)就不可避免,二者之間的任何規(guī)格差異都有可能導(dǎo)致性能問題漏測(cè)。
- 二、單機(jī)壓測(cè)達(dá)到目標(biāo)QPS,集群是否還需要壓測(cè)了?
結(jié)論是:要
集群的性能不等于=單機(jī)性能*機(jī)器數(shù)量,集群性能不是隨著機(jī)器數(shù)量線性增長(zhǎng)的,否則所有性能問題都可以堆機(jī)器解決了
隨著系統(tǒng)壓力增加,可能出現(xiàn)性能瓶頸的地方有很多:
1.服務(wù)器硬件的瓶頸
2.DB的瓶頸
3.緩存的瓶頸
4.網(wǎng)絡(luò)(帶寬)的瓶頸
......
一臺(tái)機(jī)器我們可以壓測(cè)到100QPS,10臺(tái)機(jī)器可能到不了1000QPS,可能300QPS時(shí)DB就掛了(如果有慢SQL的話)
- 三、1個(gè)月前壓測(cè)通過了,這個(gè)月還需要壓測(cè)么?
結(jié)論是:需要評(píng)估
我們?cè)跊Q策是否要做壓測(cè)之前(尤其是之前壓測(cè)通過的系統(tǒng)),要基于以下幾點(diǎn):
從上次壓測(cè)通過以來系統(tǒng)是否有變化?
1.代碼是否有變化:只要是代碼有變化、哪怕僅僅是加了一條日志,都需要仔細(xì)評(píng)估是否性能會(huì)受到影響(17年我所負(fù)責(zé)的系統(tǒng)就出現(xiàn)過一條日志使得接口RT飆升最終擠滿線程池導(dǎo)致宕機(jī)的故障)
2.網(wǎng)絡(luò)是否有變化:比如生產(chǎn)服務(wù)器換機(jī)房,換網(wǎng)絡(luò)供應(yīng)商、新增部署機(jī)器等等。
3.數(shù)據(jù)是否有變化:系統(tǒng)一段時(shí)間后數(shù)據(jù)表中數(shù)據(jù)不斷增加也會(huì)導(dǎo)致性能問題。
- 四、壓測(cè)達(dá)到預(yù)設(shè)的目標(biāo)QPS了,還需要摸高么?
結(jié)論是:看你的壓測(cè)目的
如果只是為了驗(yàn)證系統(tǒng)能否應(yīng)對(duì)某個(gè)業(yè)務(wù)峰值壓力,壓測(cè)到能應(yīng)對(duì)業(yè)務(wù)峰值水平即可,無需摸高。
如果是為了驗(yàn)證系統(tǒng)的性能基線,看看系統(tǒng)的性能極限在哪里,可以摸高-優(yōu)化-摸高反復(fù)直至無可優(yōu)化。
- 六、壓測(cè)好幾次了,代碼也優(yōu)化過幾次了,一直不通過怎么辦?
結(jié)論是:壓不過就壓不過,不會(huì)死人的,這個(gè)時(shí)候你需要review下你的QPS目標(biāo)是不是定的過高了,和開發(fā)討論下還有沒有優(yōu)化的空間,和業(yè)務(wù)討論下這個(gè)業(yè)務(wù)是不是能降級(jí)掉,和依賴方討論下能否對(duì)某些不重要的依賴方降級(jí),壓測(cè)只是一種手段,保證業(yè)務(wù)能夠正常運(yùn)行才是我們的最終目的。
以終為始,方得始終