壓測流程規(guī)范:
1. 壓測機器申請
壓測域名: 詢問運維人員
壓測機器: 看公司使用的服務(wù)器
? ? ?例如:服務(wù)機器(和線上機器一致(2核8G的機器)), 壓測機器(32核16G的機器)? ??
獲取壓測機器ip: 運維人員配置后, 使用xshell之類工具登錄到壓測機器上進行壓測;
2. 壓測工具:
wrk之類工具可以作為輕量壓測工具, 具體使用見壓測資料文檔;
demo: wrk 命令 -t 并發(fā)線程數(shù),根據(jù)機器cpu核心數(shù)進行配置,? -c 每個線程發(fā)起的http請求連接數(shù) -d 壓測持續(xù)時間, -timeout 設(shè)置請求超時時間并記錄
????例如:wrk -t2 -c100 -d1m --timeout 5? http:/press.ufotosoft.com/sns/sceneApi/listResource?version=2.17.203&lang=en&sceneId=158&apiLevel=4&compressType=7z&resolution=480&lastStamp=1509179278&eCode=1
阿里云日志:
服務(wù)器日志會采集到阿里日志上(包含access訪問日志, tomcat線程日志, gc日志, error日志), 可以觀察到qps, 響應(yīng)時間等信息;
賬號和密碼以及使用方式可找開發(fā)人員以及運維人員確認(rèn);
控制臺地址:http://signin.aliyun.com
服務(wù)器狀態(tài)觀察: pingpoint上可以觀察到服務(wù)具體信息, 包括內(nèi)存, cpu, jvm相關(guān)信息;
需要熟悉Linux的常用命令, 如cd, ls, pwd, top, free, ds, du 等命令, 使用這些命令進行服務(wù)器操作;
3. 壓測策略
a. 測試空接口, 逐步增加并發(fā)請求數(shù), 測試服務(wù)處理上限;
b. 測試業(yè)務(wù)接口, 因為接口有緩存, 為了模仿不同用戶訪問, 請使用不同參數(shù)進行壓測;
c. 觀察阿里日志, 請指定壓測時間, 方便觀察qps, 服務(wù)處理異常等信息;
d. 壓測時, 可在壓測機器上使用dstat觀察機器狀態(tài), 使用pingpoint觀察服務(wù)的cpu, 內(nèi)存, jvm虛擬機信息;
e. 請使用excel記錄每次壓測的參數(shù), wrk等工具壓測結(jié)果, qps, tomcat線程, error, cpu, 內(nèi)存觀察信息, 可用來做結(jié)果分析;
4. 數(shù)據(jù)分析
a. 接口優(yōu)化壓測:
對比接口優(yōu)化前后在各個壓測參數(shù)下的qps, 響應(yīng)時間, tomcat線程數(shù), gc最大時間, error異常情況;
b. 新上線業(yè)務(wù)接口:
計算該接口在線上能承受的最大qps, 響應(yīng)時間, 異常壓測出現(xiàn)的error
c. 性能瓶頸分析
對于線上出現(xiàn)cpu告警, 內(nèi)存告警, 磁盤告警, 502告警等問題, 需要考慮分析系統(tǒng)的性能瓶頸, 瓶頸可能存在
于網(wǎng)絡(luò), cpu, 內(nèi)存, 以及web服務(wù)的處理性能; 對于此類問題, 需要根據(jù)線上數(shù)據(jù), 進行壓測環(huán)境模擬, 觀察
監(jiān)控數(shù)據(jù), 進行分析;
壓測相關(guān)知識整理:
監(jiān)控:
網(wǎng)絡(luò)流量監(jiān)控:
sudo apt install nload? 監(jiān)控機器出入流量, 命令: nload
sudo apt install iftop? 監(jiān)控機器網(wǎng)卡流量: 命令: 通過ifconfig 判斷哪個網(wǎng)卡再用, 然后 iftop -i ech0, // ech0 網(wǎng)卡名稱
文件句柄數(shù):
ulimit -a, 查看open files, 最大值65535, 不修改會影響socket文件數(shù)上限, 導(dǎo)致請求上限較低;
設(shè)置文件句柄數(shù): ulimit -n 65535
cpu和內(nèi)存監(jiān)控;
壓測工具:
tsung:
ubuntu下安裝: sudo apt install tsung
tsung 配置文件http_sample.xml:
/usr/share/doc/tsung/examples 對應(yīng)案例
配置文件詳解:
官網(wǎng)地址:
http://tsung.erlang-projects.org/? 官網(wǎng)介紹地址
http://tsung.erlang-projects.org/user_manual/conf-file.html? 官網(wǎng)配置文件講解地址
相關(guān)概念了解:
系統(tǒng)吞吐量:
系統(tǒng)承壓能力, 與request請求對cpu消耗, 磁盤io, 網(wǎng)絡(luò)傳輸?shù)染o密相關(guān);
重要指標(biāo):
QPS(每秒請求量), TPS(每秒事務(wù)量), 并發(fā)數(shù)(系統(tǒng)同時處理的request請求數(shù)或事務(wù)數(shù)), 響應(yīng)時間(各個區(qū)間的平均響應(yīng)時間)
關(guān)聯(lián)關(guān)系: 并發(fā)數(shù) = QPS * 平均響應(yīng)時間, QPS(TPS) = 并發(fā)數(shù)/ 平均響應(yīng)時間;
常用系統(tǒng)監(jiān)測命令:
top: 系統(tǒng)進程監(jiān)控, 顯示出 CPU 的使用、內(nèi)存的使用、交換內(nèi)存、緩存大小、緩沖區(qū)大小等;
htop: 升級版top,
安裝命令: sudo apt install htop
netstat: 網(wǎng)絡(luò)統(tǒng)計, -p 顯示進程pid, -a 顯示端口
netstat -ntlp 查看進程所占端口
netstat -a |more 查看所有的服務(wù)端口
vmstat: 用于顯示虛擬內(nèi)存、內(nèi)核線程、磁盤、系統(tǒng)進程、I/O 模塊、中斷、CPU 活躍狀態(tài)等更多信息;
lsof:
iotop: 監(jiān)控磁盤i/o
安裝命令: sudo apt install iotop
iostat: 輸入輸出統(tǒng)計
安裝命令: sudo apt install sysstat
iftop: 網(wǎng)絡(luò)帶寬監(jiān)控
dstat: 性能監(jiān)控, dstat 是一個可以取代vmstat,iostat,netstat和ifstat這些命令的多功能產(chǎn)品
? 安裝命令: sudo apt install dstat?
? 命令介紹: https://linux.cn/article-3215-1.html
? 強烈推薦
注: linux相關(guān)壓測工具使用說明: https://shimo.im/docs/lmimulUb7eUh801R
推薦資料:
https://www.cnblogs.com/wangiqngpei557/p/7953453.html 大佬壓測實例
https://lihz1990.gitbooks.io/transoflptg/content/ 強烈推薦
https://blog.csdn.net/MenofGod/article/details/79009646 jmeter 增加插件