前言:sql
因業務須要,在雙11來臨之際須要對多個業務核心接口作壓測工做,話很少說,直接記錄(如下記錄爲本人的切實感覺,不表明任何立場,若有出入請另行百度,本人只作比較,方便往後回顧,謝謝)數據庫
我的從如下幾個角度進行闡述和總結:apache
一、壓測常識服務器
二、服務器性能監控範圍網絡
三、腳本編寫與壓測策略架構
四、壓測實戰併發
五、壓測結果查看與分析負載均衡
六、異常問題定位與分析性能
七、服務器性能監控測試
八、JVM監控
九、測試報告
十、踩過的坑
負載測試:
經過逐步加壓的方法,達到既定的性能閾值的目標,閾值的設定應是小於某個值,如cpu使用率小於等於80%
壓力測試:
經過逐步加壓的方法,使得系統的某些資源達到飽和,甚至失效的狀態,簡單粗暴的解釋就是什麼條件能把系統壓崩潰
併發測試:
在同一時間內,多個虛擬用戶在同時訪問同一個模塊,同一個功能,一般的測試方法就是設置集合點
容量測試:
一般是指數據庫層面的,目標是獲取數據庫的最佳容量能力。又稱爲容量預估。具體測試方法爲在必定的併發用戶,不一樣的技術數據量下,觀察數據庫的處理能力,即獲取數據庫的各項性能指標
可靠性測試:
又稱爲穩定性測試或疲勞測試。是指系統在高壓狀況下,長時間的運行是否穩定。
如cpu使用率在80%以上,7*24小時的運行,系統是否穩定
異常測試:
又稱爲失敗測試。是指系統架構方面的測試,如在負載均衡中,要測試宕機,節點掛掉等狀況的系統反映
事物
從客戶端發起的一個請求或多個請求(這些請求組成一個完成的操做),到客戶端收到服務器返回的響應
請求響應時間
客戶端發起的一個請求開始,到客戶端接收從服務器返回的響應,整個過程所耗費的時間
事物響應時間
事務多是一個或者多個請求組成的,事物響應時間主要針對於用戶的角度而言,如轉帳
併發
沒有嚴格意義上的併發。併發總有前後,不管差距是1毫秒仍是1微秒,總有一個時間差。因此併發講的是一個時間範圍內,好比1S內,
舉例:
1、多用戶在系統上進行同一操做,好比雙11,你們針對同一種商品進行秒殺
2、多用戶在系統上進行不一樣操做,好比雙11,你們針對不一樣商品進行秒殺,或者你們有進行其餘操做,好比商品瀏覽
併發用戶數
同一單位時間內,對系統發起請求的用戶數量
吞吐量
一次性能測試過程當中網絡上傳輸數據量的總和
一、CPU
二、磁盤
三、內存
四、網絡
五、版本
六、性能損耗的計算方式(怎麼計算性能損耗:相同的指標,相同的場景,相同的用戶併發數進行屢次一樣的壓測)
一、由簡單到複雜:先壓單一場景,再壓複雜場景
二、由優先級高到低:先壓重點業務點,再壓次要的
三、由單獨到並行:先單獨壓業務點,再同時並行壓業務點,由於生產場景是多個業務點在操做
PS:腳本編寫,我這邊全程用Jmeter3.3版本進行編寫,這裏我認爲壓測控制好合適的 線程數、持續時間、循環次數這是性能開始的核心,
若是想要測試出接口的拐點,則直接把線程數設置稍微大一點,持續時間設置短一點(我通常設置60S,線程數看接口性質,若是是dubbo接口我會設置稍微大一點,若是是普通的http接口,通常先設置100個線程數,而後逐步加壓,一直壓到服務器性能在一個峯值出現拐點後,大概就能夠看出該接口的QPS是多少了)
PS:本人是在公司內網環境下進行壓測的,那麼壓測服務機與壓力機則會在同一網段下,否則會受帶寬限制影響,那樣壓出來的測試結果則測不出接口性能瓶頸,
一、下載Jmeter zip包到服務器
二、解壓unzip apache-jmeter-3.3.zip
三、給jmeter.sh 賦權 ,進到解壓目錄的 /jmeter/bin 下,chmod 777 jmeter.sh,可用 sh jmeter.sh -v 來檢測命令是否可用
一、作壓測時,沒有配置host,後果會致使qps很低,幾乎爲0
二、不熟悉業務操做時,或者數據層面的轉換,可找測試同窗確認操做或者找開發肯定數據(數據能永久用的,就準備好sql腳本,結果就是省時省力)
三、造數據(測試優惠券的時候,一張券只能領一次,爲了1W張券能重複領取,須要改數據庫優惠券狀態)
四、測試報告(前期沒規範,一頓瞎搗鼓)
五、壓測環境相對的穩定性(不要三天段電,兩天斷網的,重啓服務太多了,中間件等,噁心)
JVM監控-JprofilerJVM監控JVM監控-Jprofiler-Jprofiler