性能測試工具

2015.8.7php

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

此外
lockmem=1g               只使用1g內存進行測試。
zero_buffers             用0初始化系統buffer。
nrfiles=8                每一個進程生成文件的數量。html

可得出該設備能承受的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配置安裝
 
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
可安裝紅框中的提示輸入字符以顯示相關信息
相關文章
相關標籤/搜索