我們數據產品團隊一直對外提供數據服務接口,涉及到的外部應用也比較多,所以性能也是我們比較關注的。從去年開始一直進行的對外接口統一的改造中,我們都是一步一步在推進。
今天,該產品增加緩存機制,主要是用淘寶的開源KV結構數據引擎tair,這里我不詳細介紹tair,主要說說性能測試的步驟。
1. 了解線上壓力情況
列出有各種性能要求的功能,如有并發要求的功能及相應的并發要求、有響應時間要求的功能。數據庫容量,或指定時間的業務處理量。
如,我們的需求主要用于為**頁面提供數據,目前每天的PV大概是1000W,數據量大概為1000W條記錄,期望的響應時間20ms左右。網站業務方的運營目標是提高一倍的PV量,根據這個指標進行一定的優化,看性能能否滿足。
2. 計算出施壓量
一般拿到上面的壓力值,就可以計算出需要的TPS、并發數(一般區分穩定和高峰兩個場景)。
按80/20原則進行進行峰值,80%的流量集中在20%的時間段。
推出穩定場景數值:
Tps = (PV數*0.8/3600*24*0.2)/進程數=9300/6 = 1600(1543)
Tps = (1000/平均響應時間)*并發用戶數 => 并發數= tps*平均響應時間 / 1000 = 20(12.8)
推出峰值數值:
tps=1小時pv數/3600/機器數 = 2400(2314)
并發數 = 60(19.2)
3. 準備機器
一個應用服務器:通過以下命令查看機器配置:cat /proc/cpuinfo;cat /proc/version;df -h;free -m
一個施壓機,也就是jmeter執行機(公司一般都用這個)。
最后還有就是數據庫或者Cobar數據源。準備好性能數據。
4. 服務器環境
服務器上的java、jetty版本和設置與線上保持一致。我們沒法保證線上機器與線下機器一致,但是盡量將可以一致的東西保持一致。這個估計也是現在很多公司做性能測試無法避免的問題,線上線下環境差異比較大。
5. 部署應用環境
修改antx,將涉及的應用ip都改成性能機ip,數據庫也改成性能庫,還有緩存,而后部署。
尤其是需要注意dubbo注冊到性能注冊中心,而不是功能注冊中心。
6. 準備腳本并在本地調試通過
分為一般的http請求如jason格式的,頁面錄制方式的,Java接口方式的 。 ( 備注:一般需要1小時高峰場景,8小時穩定場景!)
jmeter是一個比較好用的工具,推薦大家都多了解下。jmeter還可以用來做功能測試,對http接口支持的非常好,之前在做接口測試eclipse插件的時候發現的。
7. 部署腳本到執行機
大力神平臺實際上也是在執行機執行jmeter的測試計劃。
所以,一般可以copy到jmeter包到執行機,然后通過執行命令: JMeter -n –t ****.jmx
8. 執行,過程監控
1. 直接運行命令:$vajra/vajraJmeter/vajra-jakarta-jmeter/bin/jmeter -n -t unReadMsgCounthigh.jmx -l unReadMsgCounthigh.jtl > unReadMsgCounthigh.log &
2. 也可通過jvisualvm、jconsole監控,在自己的機器控制臺里運行jvisualvm ,進行jmx監控
3. netstat -na |grep 10.20.141.18
jstat -gcutil 18607 1000 1000
9. 性能報告
發送一份詳細的報告很有必要,報告必須要有以下幾點,這里不細說了:
1. 概述,場景設計,數據準備
2. 監控的性能指標
3. 結論
4. 硬件情況
10. 附錄
加jconsole和vmvisual監控
# Add jmx parameters
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=10.20.159.81 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9991 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
10.20.159.81 是性能機的ip
JAVA的內存使用等可以用下面來設置:
JAVA_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128m "
原文轉自:http://www.wangyuxiong.com/archives/51935