前言
在對一些web項目的接口進行性能測試過程中,會需要開發者掌握一些概念,例如性能測試,到底要測試什麼?常見的測試指標有哪些?
這裏分享一個案例。
- 案例:有一個接口,需要對上傳文件進行分析,流程是上傳一個zip文件,解壓後進行校驗,分析處理後,對文件進行簽名,同時返回前也會驗證簽名一次,再進行zip壓縮輸出,返回到平臺,有幾個重要參數,例如,文件摘要值、對文件操作的算法。
- 這個案例看完後,從開發的角度上看,我們可能會思考,哪一些步驟會出現哪一些瓶頸,哪一個步驟需要採用什麼角度來進行優化?簽名所用到的算法、處理分析算法的調優、上傳文件與下載文件的網絡傳輸、zip的壓縮與解壓,是否可以採用異步的方式、JVM調優、有那些對象不需要每次都加載…
- 從性能測試的角度上看,需要測試什麼呢?吞吐量、一次請求的響應時間、併發用戶數、還有資源使用率,其中資源使用率,例如有CPU的使用情況(算法處理與常規運算),內存使用率(保證足夠大的空間能夠對單個文件進行處理),磁盤IO的處理(文件讀取與寫入)
資源使用命令
CPU佔用率
vmstat 3
# 查看cpu最後一項,記錄us、sy、id的數據值
# us :用戶進程消耗的CPU時間百分比
# sy : 內核進程消耗CPU時間百分比
# id : CPU處在空閒狀態的時間百分比
# us+sy參考值爲80%,如果大於80%,說明可能存在CPU資源不足的情況
# 綜上所述,CPU性能評估中重點注意r、us、sy和id列的值。
或者採用top命令,可以觀察%CPU選項,輸入數字1可進行排序
內存使用率
top
# 控制檯上實時監控,查看Mem中從測試開始到測試各個階段使用的內存有多大,MEM佔比有多少,這裏可以輸入字母m來切換顯示模式
free
# 不會實時監控,只測試一次
磁盤I/O
vmstat 3
# bi : 從塊設備讀入數據的總量,即讀磁盤,單位kB/s
# bo : 寫入到塊設備的數據總量,即寫磁盤,單位kB/s
使用iostat -d -x -k 1 2獲取磁盤IO的數據變化情況
網絡I/O
# eno1 爲使用的端口
dstat -t -clmnsyr --tcp --net-packets -N eno1
未完待續,持續更新
性能測試的Jdk工具
JMX的使用
配置JAVA或者是web容器裏的JAVA_OPTS類似的參數,指定JMX的