一泪幌、 數(shù)據(jù)庫(kù)壓測(cè)
1. 為什么要進(jìn)行數(shù)據(jù)庫(kù)壓測(cè)
不斷給數(shù)據(jù)庫(kù)施加壓力,驗(yàn)證數(shù)據(jù)庫(kù)處理的性能
2.? 如何進(jìn)行數(shù)據(jù)庫(kù)壓測(cè)
測(cè)試的過(guò)程中玄渗,我們經(jīng)常要對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)進(jìn)行查詢(xún)座菠、修改狸眼、添加等操作藤树。在用 JMeter 做性能或者接口等 測(cè)試時(shí),也可以讓 JMeter 連接數(shù)據(jù)庫(kù)然后對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行相關(guān)操作拓萌。下面先來(lái)學(xué)習(xí)如何使用 JMeter 連接 MySql 數(shù)據(jù)庫(kù)進(jìn)行操作岁钓。
2.1 JDBC配置
首先創(chuàng)建一個(gè)測(cè)試計(jì)劃和線程組,然后在線程組下添加配置元件 JDBC Connection Configuration 微王。
image.png
接下來(lái)要對(duì)數(shù)據(jù)庫(kù)連接的配置項(xiàng)進(jìn)行設(shè)置屡限。
image.png
VariableNameforcreated pool: 創(chuàng)建池的變量名 。這個(gè)變量在后面介紹的JDBCRequest請(qǐng)求中用到炕倘。MaxNumberofConnections: 池中允許的最大連接數(shù)钧大。在大多數(shù)情況下,將其設(shè)置為零(0)罩旋,這意味 著每個(gè)線程都將擁有自己的池啊央,其中只有一個(gè)連接,即線程之間不共享連接涨醋。如果您真的想使用共享池瓜饥,那么 將 max count 設(shè)置為與線程數(shù)量相同,以確保線程不會(huì)彼此等待浴骂。MaxWait(ms):在試圖檢索連接的過(guò)程中超過(guò)了超時(shí)時(shí)間乓土,則池會(huì)拋出一個(gè)錯(cuò)誤 。TimeBetweenEvictionRuns(ms):在被逐出的時(shí)間間隔(ms)。在空閑對(duì)象驅(qū)逐線程之間運(yùn)行的毫 秒數(shù)趣苏。當(dāng)非正的時(shí)候狡相,就不會(huì)運(yùn)行無(wú)用的對(duì)象驅(qū)逐線程(默認(rèn)為"60000",1分鐘) 拦键。AutoCommit:將自動(dòng)提交或關(guān)閉連接到連接上 谣光。 transaction isolation:事務(wù)隔離 。這個(gè)默認(rèn)即可芬为,具體用法暫時(shí)還沒(méi)有研究過(guò)萄金,會(huì)的可以分享一下。TestWhileIdle:測(cè)試池的空閑連接 媚朦,后面的驗(yàn)證查詢(xún)將用于測(cè)試它氧敢。SoftMinEvictableIdleTime(ms):軟Min可驅(qū)逐空閑時(shí)間(ms) 。在它有資格被閑置的對(duì)象驅(qū) 逐者強(qiáng)制驅(qū)逐之前询张,一個(gè)連接可能閑置在池中孙乖,并且至少在池中存在空閑連接的額外條件,默認(rèn)值為5000(5秒) 份氧。ValidationQuery:驗(yàn)證查詢(xún) 唯袄。一個(gè)簡(jiǎn)單的查詢(xún),用來(lái)確定數(shù)據(jù)庫(kù)是否仍在響應(yīng)蜗帜。 這個(gè)驗(yàn)證查詢(xún)?cè)诔貏?chuàng) 建中使用恋拷,即使“空閑測(cè)試”建議查詢(xún)只在空閑連接上使用,也可以驗(yàn)證它厅缺。DatabaseURL:數(shù)據(jù)鏈接url蔬顾,格式:jdbc:mysql://localhost:3306/host 注釋?zhuān)簲?shù)據(jù)庫(kù)的ip地址+端口/數(shù)據(jù)庫(kù)名(查詢(xún)數(shù)據(jù)庫(kù)端口號(hào)show global variables like'port') jdbc:mysql://127.0.0.1:3306/mydb2?serverTimezone=UTC&allowMultiQueries=trueJDBCDriverclass:JDBC驅(qū)動(dòng)程序類(lèi) 。MySql選擇 com.mysql.jdbc.DriverUsername:連接數(shù)據(jù)庫(kù)的用戶(hù)名湘捎。Password:連接數(shù)據(jù)庫(kù)的密碼诀豁。
2.2 設(shè)置完成后,接下來(lái)在線程組下創(chuàng)建一個(gè) JDBC Request 請(qǐng)求窥妇。
image.png
image.png
image.png
接著在 JMeter 中添加一個(gè)查看結(jié)果樹(shù)監(jiān)聽(tīng)器舷胜,運(yùn)行一次腳本。
image.png
2.3 select statement
只支持單條查詢(xún)活翩,只支持第一條數(shù)據(jù)查詢(xún)
//如果多條會(huì)報(bào)錯(cuò)烹骨,修改,但是仍然只能查詢(xún)到一條數(shù)據(jù)allowMultiQueries=true
2.4 updata statement
修改數(shù)據(jù)
//首先修改查詢(xún)類(lèi)型Updata S纱新、tatementupdata stusetname="大飛"whereid=1;
新增數(shù)據(jù)
//首先修改查詢(xún)類(lèi)型updata statementinsertinto
同時(shí)新增支持和修改語(yǔ)句
支持多條語(yǔ)句展氓,但是select只能放最后一行
2.5 Callable Statement
支持查詢(xún)、修改
支持多個(gè)查詢(xún)
2.6 Prepared Select Statement
image.png
注意:類(lèi)型必須為varchar
結(jié)合CSV處理多條查詢(xún)
創(chuàng)建文件數(shù)據(jù):
image.png
添加CSV數(shù)據(jù)文件設(shè)置脸爱,并編寫(xiě)對(duì)應(yīng)的變量:
image.png
引用變量值${id}
image.png
結(jié)合函數(shù)助手多條查詢(xún)
創(chuàng)建文件編寫(xiě)數(shù)據(jù)
在選項(xiàng)中添加函數(shù)助手遇汞,選擇csvread函數(shù),填寫(xiě)路徑索引,拿到對(duì)應(yīng)的字符串
講拿到的字符串當(dāng)成值進(jìn)行傳遞
二空入、 jmeter對(duì)服務(wù)器壓測(cè)(Windows)
在使用Jmeter工具進(jìn)行性能測(cè)試或者壓力測(cè)試的時(shí)候要對(duì)服務(wù)器的資源進(jìn)行監(jiān)控络它,如cup的使用情況、服務(wù)器的內(nèi)存資源等歪赢,這個(gè)時(shí)候我們就需要配置一下相關(guān)插件進(jìn)行監(jiān)控化戳。
1. 資源準(zhǔn)備
插件:JMeterPlugins-Extras.jar、JMeterPlugins-Standard.jar
將JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar放到apache-jmeter-3.0\lib\ext目錄下
服務(wù):ServerAgent-2.2.1
2. 先在服務(wù)器上開(kāi)啟server的監(jiān)聽(tīng)
image.png
3. 給服務(wù)器(用本地?cái)?shù)據(jù)庫(kù)模擬服務(wù)器)添加監(jiān)聽(tīng)器-jp@gc - PerfMon Metrics Collector
image.png
4. 添加性能指標(biāo)埋凯,線程組設(shè)置線程數(shù)和時(shí)間
image.png
二点楼、 jmeter對(duì)服務(wù)器壓測(cè)(Linux)
很多服務(wù)都是部署在Linux上 的,所以我們要在Linux上做服務(wù)器壓測(cè)白对。
1. 資源準(zhǔn)備
將JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar放到apache-jmeter-3.0\lib\ext目錄下
將ServerAgent-2.2.1放到linux服務(wù)器opt目錄下掠廓,并解壓unzip
2. 環(huán)境準(zhǔn)備
ServerAgent服務(wù)端口號(hào)默認(rèn)為4444,需要設(shè)置防火墻對(duì)此端口不攔截:
開(kāi)放Linux的對(duì)外訪問(wèn)的端口4444
/sbin/iptables-I INPUT-p tcp--dport4444-j ACCEPT/etc/rc.d/init.d/iptables save---將修改永久保存到防火墻中
3. 然后在服務(wù)器中啟動(dòng)監(jiān)控服務(wù)
./startagent.sh
4. 修改JDBC Connection Configuration中配置
本地地址改為遠(yuǎn)程地址