目錄
1 需求背景
2 工具/包
2.1 Apache-jmeter
2.2 eclipse
2.3 Com.jcraft.jsch
3 插件開(kāi)發(fā)
3.1 新建工程
3.2 配置buildpath
3.3 Constants類
3.4 openSSH類
3.5 closeSSH類
4 連接測(cè)試
4.1 Jar包導(dǎo)出
?4.2 java sample
?4.3 sql sample
1 需求背景
??? 對(duì)數(shù)據(jù)庫(kù)進(jìn)行壓力測(cè)試時(shí),需要模擬同一時(shí)間大量的sql請(qǐng)求發(fā)送,借助于jmeter的 sql請(qǐng)求可以實(shí)現(xiàn),但是對(duì)RDS來(lái)說(shuō),需要進(jìn)行端口映射(跳板機(jī))訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù),對(duì)于單線程手工測(cè)試來(lái)說(shuō),可以直接通過(guò)CRT進(jìn)行端口跳轉(zhuǎn)訪問(wèn),但是對(duì)于多線程并發(fā)訪問(wèn)時(shí),各個(gè)線程都需要開(kāi)啟端口映射,此時(shí)CRT無(wú)法滿足,借助于第三方插件,通過(guò)定制 jmeter腳本,可以幫助我們實(shí)現(xiàn)測(cè)試目標(biāo)。
2 工具/包
2.1 Apache-jmeter
?? Jmeter支持java語(yǔ)言,是一個(gè)開(kāi)源的性能測(cè)試工具,通過(guò)擴(kuò)展,可以實(shí)現(xiàn)非常豐富的功能,本講義中的版本是2.11,以下是在 Windows 平臺(tái)上安裝和配置 JMeter 的一般步驟:
-
下載 JMeter:
- 訪問(wèn) Apache JMeter 官方網(wǎng)站(https://jmeter.apache.org)。
- 在網(wǎng)站上找到最新版本的 JMeter,點(diǎn)擊下載鏈接。
-
安裝 JMeter:
- 下載完成后,將 JMeter 壓縮包解壓到你選擇的目錄中,例如 "C:\Program Files"。
- 進(jìn)入解壓后的 JMeter 目錄,找到 jmeter.bat(Windows 批處理文件)。
-
配置 Java 環(huán)境:
- 在運(yùn)行 JMeter 之前,確保已經(jīng)安裝了 Java 開(kāi)發(fā)工具包(JDK)??梢栽诿钐崾痉休斎?"java -version" 來(lái)檢查 Java 是否正確安裝和配置。
-
啟動(dòng) JMeter:
- 雙擊運(yùn)行 jmeter.bat 文件,或者在命令提示符中進(jìn)入 JMeter 目錄并運(yùn)行 jmeter.bat 文件來(lái)啟動(dòng) JMeter。
-
創(chuàng)建測(cè)試計(jì)劃:
- 在 JMeter 啟動(dòng)后,你將看到一個(gè)空白的測(cè)試計(jì)劃。右鍵點(diǎn)擊測(cè)試計(jì)劃,選擇 "Add" -> "Threads (Users)" -> "Thread Group" 來(lái)創(chuàng)建一個(gè)新的線程組。
- 在線程組中,你可以設(shè)置并發(fā)用戶數(shù)、循環(huán)次數(shù)等。
-
添加測(cè)試元件:
- 在線程組下,你可以添加各種測(cè)試元件,如 HTTP 請(qǐng)求、FTP 請(qǐng)求、數(shù)據(jù)庫(kù)請(qǐng)求等。右鍵點(diǎn)擊線程組,選擇 "Add" -> "Sampler" 來(lái)添加所需的測(cè)試元件。
-
配置測(cè)試元件:
- 配置每個(gè)測(cè)試元件的屬性,例如目標(biāo) URL、請(qǐng)求參數(shù)、身份驗(yàn)證等。右鍵點(diǎn)擊測(cè)試元件,選擇 "Add" -> "Config Element" 或 "Add" -> "Listener" 來(lái)添加和配置所需的元件。
-
運(yùn)行壓力測(cè)試:
- 配置完所有測(cè)試元件后,點(diǎn)擊工具欄上的 "Start" 按鈕(綠色三角形)來(lái)開(kāi)始?jí)毫y(cè)試。
- JMeter 將模擬并發(fā)用戶的行為,發(fā)送請(qǐng)求并收集結(jié)果。
以上是在 Windows 平臺(tái)上安裝和配置 JMeter 的基本步驟。在安裝過(guò)程中,請(qǐng)確保已經(jīng)正確配置了 Java 環(huán)境,并根據(jù)你的需求和場(chǎng)景進(jìn)行相應(yīng)的配置和測(cè)試計(jì)劃編寫。
2.2 eclipse
?? 在eclipse中寫java sample插件,以下是在 Windows 平臺(tái)上安裝和配置 Eclipse 的一般步驟:
-
下載 Eclipse:
- 訪問(wèn) Eclipse 官方網(wǎng)站(https://www.eclipse.org)。
- 在網(wǎng)站上找到適合你的開(kāi)發(fā)需求的 Eclipse 版本,比如 Eclipse IDE for Java Developers、Eclipse IDE for Java EE Developers 等。
- 點(diǎn)擊下載鏈接并選擇適合你操作系統(tǒng)的安裝包。
-
安裝 Eclipse:
- 下載完成后,解壓安裝包到你選擇的目錄中,例如 "C:\Program Files"。
- 運(yùn)行解壓后的 Eclipse 可執(zhí)行文件(通常是 eclipse.exe)來(lái)啟動(dòng) Eclipse。
-
選擇工作空間(Workspace):
- 當(dāng)你第一次運(yùn)行 Eclipse 時(shí),它會(huì)要求你選擇一個(gè)工作空間,這是 Eclipse 存儲(chǔ)項(xiàng)目和設(shè)置的地方。你可以選擇接受默認(rèn)的工作空間,也可以指定自己的位置。
-
配置插件:
- 一般情況下,你可能需要根據(jù)你的開(kāi)發(fā)需求安裝一些插件。Eclipse 有一個(gè)內(nèi)置的插件安裝器,可以通過(guò) "Help" -> "Eclipse Marketplace" 或 "Help" -> "Install New Software" 來(lái)安裝需要的插件。
-
配置 JDK:
- 在開(kāi)始編寫 Java 代碼之前,需要確保已經(jīng)安裝了 Java 開(kāi)發(fā)工具包(JDK)。打開(kāi) Eclipse 后,轉(zhuǎn)到 "Window" -> "Preferences" -> "Java" -> "Installed JREs",確保已經(jīng)配置了正確的 JDK。
-
創(chuàng)建項(xiàng)目:
- 在 Eclipse 中,可以通過(guò) "File" -> "New" -> "Java Project" 來(lái)創(chuàng)建一個(gè)新的 Java 項(xiàng)目。根據(jù)向?qū)е甘?,輸入?xiàng)目名稱和其他信息,然后點(diǎn)擊 "Finish" 完成創(chuàng)建。
-
編寫和運(yùn)行代碼:
- 在創(chuàng)建項(xiàng)目后,你可以開(kāi)始編寫和編輯 Java 代碼。創(chuàng)建新的類、包等,然后右鍵點(diǎn)擊類名并選擇 "Run As" -> "Java Application" 來(lái)運(yùn)行代碼。
以上是在 Windows 平臺(tái)上安裝和配置 Eclipse 的基本步驟。在安裝過(guò)程中,記得仔細(xì)閱讀安裝向?qū)У恼f(shuō)明,根據(jù)個(gè)人需求進(jìn)行定制和配置。
2.3 Com.jcraft.jsch
com.jcraft.jsch 是一個(gè) Java 實(shí)現(xiàn)的 SSH2 協(xié)議庫(kù),它提供了在 Java 應(yīng)用程序中進(jìn)行 SSH 連接和操作遠(yuǎn)程主機(jī)的功能。它是一個(gè)開(kāi)源庫(kù),可以用于開(kāi)發(fā)需要通過(guò) SSH 協(xié)議進(jìn)行遠(yuǎn)程通信的應(yīng)用程序。
使用 com.jcraft.jsch 庫(kù),你可以實(shí)現(xiàn)以下功能:
-
SSH 連接:建立與遠(yuǎn)程主機(jī)的安全連接,并進(jìn)行身份驗(yàn)證和授權(quán)。
-
遠(yuǎn)程命令執(zhí)行:執(zhí)行遠(yuǎn)程主機(jī)上的命令,并獲取命令的輸出結(jié)果。
-
文件傳輸:上傳和下載文件到遠(yuǎn)程主機(jī)。
-
端口轉(zhuǎn)發(fā):通過(guò) SSH 隧道實(shí)現(xiàn)本地端口與遠(yuǎn)程主機(jī)之間的轉(zhuǎn)發(fā)。
下面是一個(gè)簡(jiǎn)單的示例代碼,演示如何使用 com.jcraft.jsch 連接到遠(yuǎn)程主機(jī)并執(zhí)行命令:
import com.jcraft.jsch.*;
public class SSHExample {
public static void main(String[] args) {
String host = "remote-host";
String username = "username";
String password = "password";
int port = 22;
try {
JSch jsch = new JSch();
// 創(chuàng)建 SSH session
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
// 創(chuàng)建 SSH channel
Channel channel = session.openChannel("exec");
// 設(shè)置要執(zhí)行的命令
((ChannelExec) channel).setCommand("ls -l");
// 連接并執(zhí)行命令
channel.connect();
// 獲取命令輸出結(jié)果
InputStream in = channel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 關(guān)閉連接
channel.disconnect();
session.disconnect();
} catch (JSchException | IOException e) {
e.printStackTrace();
}
}
}
以上代碼通過(guò) com.jcraft.jsch 庫(kù)連接到遠(yuǎn)程主機(jī),并執(zhí)行了一個(gè)簡(jiǎn)單的 ls 命令來(lái)列出遠(yuǎn)程主機(jī)的文件列表。你可以根據(jù)需要擴(kuò)展和修改這個(gè)示例,實(shí)現(xiàn)更復(fù)雜的功能,如文件傳輸、端口轉(zhuǎn)發(fā)等。
3 插件開(kāi)發(fā)
3.1 新建工程
?? 新建一個(gè)java工程,將下載下來(lái)的Com.jcraft.jsch 源碼導(dǎo)入,并新建一個(gè)package,用于編寫java sample,結(jié)構(gòu)如圖所示。
3.2 配置buildpath
將%JMETER_HOME%\lib 及 %JMETER_HOME%\lib\ext 導(dǎo)入
3.3 Constants類
該類主要配置運(yùn)行參數(shù),例如數(shù)據(jù)庫(kù)連接,用戶名,數(shù)據(jù)庫(kù)密碼,端口號(hào)等,如果這些變量基本是不變的話可以寫在Constants里。
/*Constant.java*/
package startSSH;
public class Constants {
?? static final String driver="com.mysql.jdbc.Driver";
?? static final String connServer="jdbc:mysql://localhost:12306/";
?? static final String dataBase="ccms_qinjiaoshou";
?? static final String userName="*******";
?? static final String passWord="*******";
?? static final String ssh_server="******";
?? static final int ssh_server_port=22;
?? static final String ssh_loginName="yang.yang";
?? static final String ssh_loginPassword="***********";
?? static final int local_port=12306;
?? static final int remote_port=3306;
?? static final String remote_server="******";
?? static final String ZH_Encoding="?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true";
}
3.4 openSSH類
在openSSH中,定義了參數(shù)以及默認(rèn)值,并開(kāi)啟端口轉(zhuǎn)發(fā),以及由于環(huán)境問(wèn)題,這些參數(shù)并不是固定的,這種寫死在代碼中的方式就不靈活,JMETER 提供了讀取參數(shù)的方法,參見(jiàn)
/*openSSH.java*/
?如圖
入口函數(shù)
入口函數(shù)是為了讓jmeter找到對(duì)應(yīng)的函數(shù)入口,見(jiàn)圖
?注意,端口應(yīng)該作參數(shù)化處理,多個(gè)線程占用一個(gè)端口會(huì)出現(xiàn)連接失敗的問(wèn)題。一個(gè)SQL請(qǐng)求結(jié)束后,應(yīng)釋放該線程占用的端口資源,需要將該線程已占用的端口關(guān)閉。
3.5 closeSSH類
該類主要用于釋放線程占用的端口
/*closeSSH.java*/
入口函數(shù):
?
4 連接測(cè)試
4.1 Jar包導(dǎo)出
分別將項(xiàng)目導(dǎo)出為 JAR包,導(dǎo)出 2次 ,命名為openSSH.jar 和 closeSSH.jar,分別用于開(kāi)啟端口sample 以及關(guān)閉關(guān)口sample
?導(dǎo)出時(shí)注意選擇對(duì)應(yīng)的入口函數(shù)
?將2個(gè) jar文件 以及 mysql jdbc jar 放到%JMETER_home%\lib\ext目錄下,然后以admin身份運(yùn)行jmeter。
?4.2 java sample
在Jmeter中 新建線程組,定義一個(gè)用戶定義變量以保存隨機(jī)端口號(hào),新建java sample
?該 java請(qǐng)求用于打開(kāi)端口,選擇類名稱,填入適當(dāng)?shù)膮?shù),注意localport那一欄填寫隨機(jī)值。
?4.3 sql sample
首先配置JDBC連接
?注意:Variable Name不能為空;最大連接數(shù)設(shè)置要>jmeter線程數(shù),端口號(hào)用隨機(jī)數(shù)替代
配置完jdbc連接后,新建sql請(qǐng)求就可以了
?最后加上關(guān)閉端口的java sample
?開(kāi)始測(cè)試,注意觀察jmeter console日志及sql結(jié)果樹(shù)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-498052.html
?可見(jiàn)打開(kāi)了57734的端口映射,而且正確進(jìn)行了查詢,成功實(shí)現(xiàn)了模擬SSH進(jìn)行端口轉(zhuǎn)發(fā)的需求。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-498052.html
到了這里,關(guān)于利用jmeter java sample端口轉(zhuǎn)發(fā)實(shí)現(xiàn)對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的壓力測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!