1. 程式人生 > >性能測試工具

性能測試工具

文件 -h config job medium 帶寬 大小 打開 iptable

2015.8.7

橫向擴展能力 數據庫的優化 盡量讓一臺機器能夠承載更多的用戶請求 性能測試就是通過技術的手段模擬大量用戶同時訪問被測應用,觀察記錄和分析系統的各項性能指標的過程。 性能測試的目標是評估系統的性能瓶頸,預測系統的最大用戶負載能力 模擬大量並發用戶 監控系統負載參數分析系統瓶頸 平均響應時間(TTLB,time 頭laster byte) 合理的平均響應時間 2/5/10原則(最佳2秒,可以接受5秒,不能接受10秒) 性能指標--系統資源類 CPU的占用率(CPU) 內存的占用率,換頁數等(內存) 讀寫請求數,讀寫量(I/O) 進站出站帶寬占用率(帶寬) 負載測試(Load Test) 為了驗證系統設計符合正常業務負載情況下系統性能的測試
壓力測試(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

說明:
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 每個進程生成文件的數量。

可得出該設備能承受的IO IO能力強的才適合作為數據庫服務器 2015.8.10 JMeter性能測試工具 Apache組織開發的性能測試工具 可以對: web-http,https SOAP(webservice)
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 phpmyadmin
systemctl 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解壓壓縮包,
技術分享
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 技術分享 可安裝紅框中的提示輸入字符以顯示相關信息 技術分享



性能測試工具