性能測試工具
阿新 • • 發佈:2017-05-09
文件 -h config job medium 帶寬 大小 打開 iptable
壓力測試(Stress Test)
為了驗證系統在極端負載情況下的性能表現的測試
Centos 7虛擬機安裝教程 http://www.centoscn.com/image-text/setup/2014/0723/3341.html sysstat(性能測試工具) 使用putty進入命令行安裝sysstat 1.yum list sysstat查看是否安裝(有installed或中文表示已安裝) 2.若沒有安裝輸入 yum install sysstall.x86_64(這個是會在上個命令中顯示的)
3.在同第一步
輸入 cat /etc/cron.d/sysstat進入sysstat的配置文件,其中表示10分鐘執行一次命令(正常開發的時候需要將其改為1分鐘,方便測試)每10分鐘獲取一次系統性能信息,每天23.53分有個總結報告
使用 cd /var/log/sa進入日誌文件路徑再輸入 ls查看該目錄文件便可看到日誌文件
sysstat常用命令之CPU監控
CUP任務數
命令為:sar -q -f sa07(這是日誌文件)
runq-sz:Run queue length 等待執行的任務隊列長度,越長阻塞越嚴重
plist-sz:隊列中的任務總數
ldavg-1(5,15):一分鐘,五分鐘、15分鐘內系統負載描述,值是通過執行中的任務和等待執行的任務的個數的平均值得到的。當該值很大的時候代表的是cpu負載很大。使用top查看cpu占用最高的
CPU占用百分比
命令為:sar -p -f sa07(這是日誌文件)
PRI:進程優先權,代表這個進程可被執行的優先級,其值越小,優先級越高,越早被執行
NI:進程NICE值,進程可被執行的優先級的修正值
PRI(new)=PRI(old)+nice
%nice:改過優先級的進程CPU占用率
%steal:管理程序(hypervisor)為另一個虛擬進程提供服務而等待CPU的百分比(等待CPU)該值越高代表CPU任務繁重程度越大
%iowait:IO請求等待百分比,該值越大代表IO任務繁重,磁盤讀寫任務多
sysstat常用命令之內存監控
命令:sar -r -f sa07
memfree:空閑內存
memused:已經使用的內存(物理內存)
buffers/cached:是為了提高文件讀取的性能的磁盤緩存。
page cache(kbcached):實際上是針對文件系統的,是文件的緩存
Buffer cache(buffers):是針對磁盤塊的緩存
kbcommit:是為了保證程序的正常運行需要的內存
內存換頁(物理內存和硬盤的換入換出)
命令:sar -B -f sa07
pgpgin/s:換入每秒種從磁盤或swap置換到內存的字節數(KB)
pgpgout/s:換出表示每秒從內存置換到磁盤或swap的字節數(KB)(這兩個參數很重要,一定程度上表現了內存的壓力)
fault/s:每秒系統產生的缺頁數,即主缺頁和小缺頁之和(缺頁就是某些數據放在了磁盤上,而需要取該數據需要從內存當中去,導致了缺頁)
命令:sar -W -f sa07
pswpin/s:換入每秒種swap換入的字節數(KB)
pswpout/s:換出表示每秒swap換出的字節數(KB)(這兩個參數很重要,一定程度上表現了內存的壓力)
sysstat常用命令之IO監控
命令:sar -b -f sa07
tps:每秒物理設備的I/O請求次數
rtps:每秒鐘從物理設備讀入的請求次數
wtps:每秒鐘想物理設備寫入的請求次數
breas/s:每秒向物理設備讀入的數據量,單位為塊/s
bwrtn/s:每秒想物理設備寫入的數據量,單位為塊/s
命令:sar -b -f sa07
tps:每秒物理設備的I/O請求次數
rd_sec每秒讀取扇區的次數
wr_sec每秒寫扇區的次數
avgrq-sz:平均每次設備I/O操作的數據大小
avgqu-sz:磁盤請求隊列的平均長度
await:從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間單位為毫秒
svctm:系統處理每次請求的平均時間不包括請求隊列中的消耗時間
%util:I/O請求占CPU的百分比,比率越大說明越飽和
sysstat常用命令之NetWork監控
DEV顯示網絡接口信息,EDEV顯示關於網絡錯誤的統計數據,NFS統計活動的NFS客戶端信息,NFSD統計NFS服務器的信息,SOCK顯示套接字信息,ALL顯示所有5個開關,他們可以單獨或者一起使用
命令:sar -n DEV -f sa07
rxpck/s:每秒鐘接收的數據包
txpck/s:每秒鐘發送的數據包
rxbyt/s:每秒鐘接收的字節數
txbyt/s:每秒鐘發送的字節數
rxcmp/s:每秒鐘接收的壓縮數據包
txcmp/s:每秒鐘發送的壓縮數據包
rxmcst/s:每秒鐘接收的多播數據包
評估磁盤讀寫性能極限
fio工具
在centos 中安裝好fio
輸入命令
fio -filename=/test -direct=1 -iodepth 1 -thread -rw=randread
-ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=30 -group_reporting -name=mytest
FTP
LDAP
TCP
NOSQL等等都可以做測試
winSCP:上傳文件到服務器的軟件 另外需要在服務器端安裝php+apache環境:http://www.jb51.net/os/188488.html 安裝 nginx http://www.centoscn.com/CentosServer/www/2014/0904/3673.html phpMyAdmin配置安裝 http://www.linuxidc.com/Linux/2014-12/110847.htm
最後修改conf.d中的phpMyAdmin.conf文件即可 使用putty連接上centos7服務器(需要知道centos7的ip。獲取方法,ip addr) 連接上之後輸入用戶名密碼進入命令行輸入top得到系統進程當前狀態等 使用putty獲取進程的資源占用信息(top命令以及其附加命令) 退出 vi 輸入:wq回車 使用ECShop進行測試 ECShop安裝運用 使用winscp將ECShop上傳到服務器,再用putty,使用unzip解壓壓縮包,
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113726254-482564580.png)
docs:安裝的解釋說明 upgrade:更新 upload:最新安裝 將upload拷貝到根目錄的ecshop中 若出現在虛擬機上能訪問,宿機上不能訪問的情況,請設置修改防火墻 命令:vi /etc/sysconfig/iptables 重啟防火墻:systemctl restart iptables.service ,並且將該文件夾的權限改給apache 命令:chown -R apache:apache mycms(項目目錄) 2015.8.11 JMeter進行壓力測試 Apache 組織開發的性能測試工具,用於模擬大量用戶的並發訪問,最大的有點是完全開源 jmeter需要安裝了java jdk 新增用戶組(thread group)
自動化測試
錄制-->回放
錄制:
只有添加可config element 中的HTTP Request Defaults才能添加sampler 中的HTTP Request等
1.在test plan 中添加用戶組
2.在用戶組添加config element中的HTTP Request Defaluts
3.在用戶組下添加logic controller 中的recording controller
4.在workbench中添加HTTP(s)Test Script Recorder並配置好用戶組(listener 中的view Results Tree是加在此處)
5.添加代理服務器,(在Internet選項中,連接,局域網設置)
這個端口是在HTTP(s)Test Script Recorder中設置的端口
回放:
將需要回放的php保存起來,其他的刪掉,添加一個listener中的,aggregate report和vieew results tree
點擊start啟動回放
任務:
壓力測試入門:https://blog.linuxeye.com/335.html
2015.8.12
自定義參數回放:
添加固定變量如:ip port等
1.添加config 中的UserDefined variables
2.在UserDefined variables添加參數
3.在各個鏈接中修改其參數配置${參數name}
添加參數組,如id(可實現進入不同id的頁面)
1.添加config中的CSV data set config
2.在bin目錄下新建一個data目錄在其中新建個catgd.csv的文件
3.在其中寫入參數(設置編碼為UTF-8 without ROM(在notepad中))
4.在CSV data set config 中配置
5.同樣在每個頁面中將參數參數化(${參數name})
使用postProcessor判斷響應中的關鍵數據是否正常顯示頁面
1.找到頁面關鍵元素(能標識該該頁面正常打開的元素)
如
2.在頁面下添加css/jquery Extractor,在其中配置
3.在頁面下添加BeanShell Assertion 配置
便會在命令行中打印取到的值(打印是為了調試)
jmeter模擬用戶的等待行為
在用戶組下添加timer(放在需要等待的頁面下面)
constant timeer 固定等待時間
gaussian random timer 滿足高斯曲線的等待時間
poisson random timer 滿足泊松分布的等待時間
開始測試:使用putty top檢測服務器性能
設置好並發用戶數和請求次數start使用二分法便可知道該服務器能承受的並發量,並查看知道性能瓶頸(CPU占用率)
監控Mysql慢查詢
若出現數據表數據內存不夠的情況,使用phpMyadmin對該表進行操作,修改存儲引擎為innoDB
慢查詢解決方案:
加緩存
使用putty,輸入vi /etc/myconf進行修改my.conf文件,加入:
log-queries-not-using-indexes=on#將未使用索引的記錄下來
long_query_time=0.03
log-slow-queries=/var/log/mariadb/mariadb.queries-slow.log#對應文件夾
保存重啟mysql服務 systemctl restart mariadb.service
若無/var/log/mariadb/mariadb.queries-slow.log該文件則新建,並設置好該文件權限
檢查該log文件便可知道慢查詢的語句,可以針對優化
2015.8.13
使用systat分析系統硬件性能瓶頸
使用systat教程在上面
jmeter進階,使用session支持
打開jmeter,打開之前保存的文件
1.添加config 中的HTTP cookies Manager
假如第一個是登錄操作,
2.在用戶組中添加一個logic controller中的loop controller,將登錄後的操作頁面加入該controller中,
原理是登錄操作只執行一次(在用戶組中的loop count設置為1),將loop controller中的loop count設置為forever
多用戶組實現多場景測試
添加一個thread 中的thread group並設置好其中的設置(如場景1,不過其進行的操作應該不同)便可分派不同的用戶個數來進行不同的操作。可以進行用戶總數的參數化(也可以直接填入各個場景的用戶個數)
在test plan下添加config 下的user defined variable(也可以在Test plan下直接添加參數),添加參數,然後在每個場景中使用該參數(場景中運用方法:${__javaScript("${User_Total}" * 0.5)})
Jmeter擴展
通過BeabShell進行java擴展
1.準備好實現特殊功能的java包(com.jmooc.jar文件)
2.在jmeter的根目錄中添加dependencies文件夾(和bin目錄同級)
3.在bin中找到jmeter.properties打開
4.搜索 plugin_dependency_paths,修改為plugin_dependency_paths=../dependencies;
5.重啟jmeter.bat
6.在用戶組中添加BeanShell Sampler 在Script中(調用擴展函數)寫入:
import com.imooc.Math;
String ret =Math.sqrt("2.3");
log.info("Get THE RESULT:"+RET);
(可以在Options中選擇顯示log窗口)
通過BSF進行JavaScript擴展
添加一個BSF sampler或是BSF postProcessor
直接在script中寫入JavaScript代碼即可
開發自定義的Sampler、configElment
性能監控軟件Nmon介紹
一個類似TOP但是顯示功能更加豐富的工具
安裝:yum list nmon檢查機器是否安裝,未安裝的,使用# yum install nmon.x86_64
安裝
使用:使用putty輸入 nmon
可安裝紅框中的提示輸入字符以顯示相關信息
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113733238-179211191.png)
2015.8.7
橫向擴展能力 數據庫的優化 盡量讓一臺機器能夠承載更多的用戶請求 性能測試就是通過技術的手段模擬大量用戶同時訪問被測應用,觀察記錄和分析系統的各項性能指標的過程。 性能測試的目標是評估系統的性能瓶頸,預測系統的最大用戶負載能力 模擬大量並發用戶 監控系統負載參數分析系統瓶頸 平均響應時間(TTLB,time 頭laster byte) 合理的平均響應時間 2/5/10原則(最佳2秒,可以接受5秒,不能接受10秒) 性能指標--系統資源類 CPU的占用率(CPU) 內存的占用率,換頁數等(內存) 讀寫請求數,讀寫量(I/O) 進站出站帶寬占用率(帶寬) 負載測試(Load Test) 為了驗證系統設計符合正常業務負載情況下系統性能的測試Centos 7虛擬機安裝教程 http://www.centoscn.com/image-text/setup/2014/0723/3341.html sysstat(性能測試工具) 使用putty進入命令行安裝sysstat 1.yum list sysstat查看是否安裝(有installed或中文表示已安裝) 2.若沒有安裝輸入 yum install sysstall.x86_64(這個是會在上個命令中顯示的)
3.在同第一步
輸入 cat /etc/cron.d/sysstat進入sysstat的配置文件,其中表示10分鐘執行一次命令(正常開發的時候需要將其改為1分鐘,方便測試)每10分鐘獲取一次系統性能信息,每天23.53分有個總結報告
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113719644-1958936337.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113721222-1762457413.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113721832-924250769.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113722410-224476769.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113723019-916098042.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113723910-296425168.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113724629-1433253184.png)
DEV顯示網絡接口信息,EDEV顯示關於網絡錯誤的統計數據,NFS統計活動的NFS客戶端信息,NFSD統計NFS服務器的信息,SOCK顯示套接字信息,ALL顯示所有5個開關,他們可以單獨或者一起使用
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113724972-61406553.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113725379-964434633.png)
說明:
filename=/dev/sdb1 測試文件名稱,通常選擇需要測試的盤的data目錄。
direct=1 測試過程繞過機器自帶的buffer。使測試結果更真實。
rw=randwrite 測試隨機寫的I/O
rw=randrw 測試隨機寫和讀的I/O
bs=16k 單次io的塊文件大小為16k
bsrange=512-2048 同上,提定數據塊的大小範圍
size=5g 本次的測試文件大小為5g,以每次4k的io進行測試。
numjobs=30 本次的測試線程為30.
runtime=1000 測試時間為1000秒,如果不寫則一直將5g文件分4k每次寫完為止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合讀寫的模式下,寫占30%
group_reporting 關於顯示結果的,匯總每個進程的信息。
此外
lockmem=1g 只使用1g內存進行測試。
zero_buffers 用0初始化系統buffer。
nrfiles=8 每個進程生成文件的數量。
FTP
LDAP
TCP
NOSQL等等都可以做測試
winSCP:上傳文件到服務器的軟件 另外需要在服務器端安裝php+apache環境:http://www.jb51.net/os/188488.html 安裝 nginx http://www.centoscn.com/CentosServer/www/2014/0904/3673.html phpMyAdmin配置安裝 http://www.linuxidc.com/Linux/2014-12/110847.htm
yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install phpmyadminsystemctl restart httpd.service #重啟apache systemctl restart mariadb.service #重啟MariaDB
最後修改conf.d中的phpMyAdmin.conf文件即可 使用putty連接上centos7服務器(需要知道centos7的ip。獲取方法,ip addr) 連接上之後輸入用戶名密碼進入命令行輸入top得到系統進程當前狀態等 使用putty獲取進程的資源占用信息(top命令以及其附加命令) 退出 vi 輸入:wq回車 使用ECShop進行測試 ECShop安裝運用 使用winscp將ECShop上傳到服務器,再用putty,使用unzip解壓壓縮包,
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113726254-482564580.png)
docs:安裝的解釋說明 upgrade:更新 upload:最新安裝 將upload拷貝到根目錄的ecshop中 若出現在虛擬機上能訪問,宿機上不能訪問的情況,請設置修改防火墻 命令:vi /etc/sysconfig/iptables 重啟防火墻:systemctl restart iptables.service ,並且將該文件夾的權限改給apache 命令:chown -R apache:apache mycms(項目目錄) 2015.8.11 JMeter進行壓力測試 Apache 組織開發的性能測試工具,用於模擬大量用戶的並發訪問,最大的有點是完全開源 jmeter需要安裝了java jdk 新增用戶組(thread group)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113726832-46476837.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113727129-1897162276.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113727769-764510206.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113730176-1070583950.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113730472-1068423465.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113730894-978558247.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113731269-1932885183.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113731972-292480984.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113732394-1706436463.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113732754-1114735056.png)
![技術分享](http://images2015.cnblogs.com/blog/737832/201705/737832-20170509113733238-179211191.png)
性能測試工具