jmeter 使用 ssh 方式訪問資料庫
1. 背景
出差某單位現場,測試效能問題,Jmeter指令碼中存在通過連線池訪問資料庫方式獲取資料,客戶現場不允許直接連線資料庫訪問資料,而是通過ssh方式連線到資料庫服務,在通過127.0.0.1的方式訪問
2.解決思路
通過java,建立ssh通道,配置本地轉發到遠端和遠端轉發到本地的相關引數
通過jdbc:mysql://127.0.0.1:對映到本地的埠/dbname 方式訪問mysql
3.實現
3.1 java實現建立ssh
package ssh_connect;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import java.sql.*;
public class connect_ssh{
/*
* lPort:對映到本地的埠
* sship:ssh服務ip
* sshport:ssh埠,預設22
* sshname:ssh使用者名稱
* sshpwd:ssh密碼
* mysqlport:mysql服務埠
*/
public static void start_ssh(int lPort,String sship,int sshport,String sshname,
String sshpwd,int mysqlport){
JSch jsch=null;
Session session = null;
try{
jsch = new JSch();
//設定ssh的使用者名稱、ip地址、埠,一般預設埠22
session = jsch.getSession(sshname, sship, sshport);
session.setPassword(sshpwd);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
//本地轉發到遠端
session.setPortForwardingL(lPort, sship, mysqlport);
//遠端轉發到本地
session.setPortForwardingR(mysqlport,sship, lPort);
//除錯時可以解注
// System.out.println("ssh連線成功,ssh版本號:"+session.getServerVersion());
}
catch (Exception e){
e.printStackTrace();
}
}
//除錯時可以解注
// public static void main(String[] args) throws Exception{
// start_ssh(3334,"172.16.81.29",22,"htc","123123",3307);
// }
//
}
3.2 將該方法打成jar包
下載ssh.jar
3.3 在Jmeter指令碼中使用
前提:將ssh.jar包和jsch-0.1.54.jar包放在jmeter/lib/ext下面,重啟jmeter
第一步:
- 線上程中,建立一個Beanshell請求,內容如下:
// 引數依次為:
//對映到本地的埠(確保沒有被佔用);
//sh服務ip;
//ssh埠(預設22);
//ssh使用者名稱;
//ssh密碼;
//mysql服務埠
import ssh_connect.connect_ssh;
connect_ssh a= new connect_ssh();
a.start_ssh(3338,"172.16.81.29",22,"root","123123",3307);
第二步:
- 新增JDBC Connection Configuration
url位置:jdbc:mysql://127.0.0.1:beanshell中設定的對映到本地的埠/資料庫名稱?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
第三步:
- 正常新增JDBC Request
** 注意:**
建立ssh之前,需要確保對映到本地的埠沒有被佔用
ssh建立一次之後,就無需建立了,在指令碼里註釋就好
相關文章
- web方式訪問sshWeb
- 資料庫訪問幾種方式對比資料庫
- Mybatis基於註解的方式訪問資料庫MyBatis資料庫
- Spring Boot入門(七):使用MyBatis訪問MySql資料庫(xml方式)Spring BootMyBatisMySql資料庫XML
- Jmeter 連結資料庫後批次使用的問題JMeter資料庫
- ssh埠轉發(之kettle ssh方式連線資料庫)資料庫
- Spring Boot入門(六):使用MyBatis訪問MySql資料庫(註解方式)Spring BootMyBatisMySql資料庫
- 使用 @NoRepositoryBean 簡化資料庫訪問Bean資料庫
- JDBC資料庫訪問JDBC資料庫
- GUI應用程式該以何種方式訪問資料庫?GUI資料庫
- 使用speedment以Java 8 Stream訪問資料庫Java資料庫
- 使用PowerBuilder同時訪問多個資料庫UI資料庫
- Oracle資料庫訪問控制Oracle資料庫
- 異構資料庫訪問資料庫
- Spring框架訪問資料庫的兩種方式的小案例Spring框架資料庫
- jboss訪問資料庫的問題資料庫
- SSH_hibernate---六種查詢資料庫方式資料庫
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- 外網訪問MySQL資料庫MySql資料庫
- Oracle資料庫限制訪問IPOracle資料庫
- C#訪問MySQL資料庫C#MySql資料庫
- C#訪問SQLite資料庫C#SQLite資料庫
- 訪問HyperSQL資料庫的方法SQL資料庫
- 限制特定IP訪問資料庫資料庫
- 資料庫如何處理大資料訪問資料庫大資料
- 求助:資料庫併發訪問問題資料庫
- 『動善時』JMeter基礎 — 41、使用JMeter連線資料庫(MySQL)JMeter資料庫MySql
- jmeter連線資料庫JMeter資料庫
- Jmeter壓則資料庫JMeter資料庫
- Tomcat中訪問資料庫使用屬性檔案問題Tomcat資料庫
- log4jdbc資料庫訪問日誌框架使用JDBC資料庫框架
- MySQL新增使用者以及資料庫訪問授權MySql資料庫
- 使用sqlnet.ora禁止特定IP訪問資料庫SQL資料庫
- 使用Oracle Net實現限制特定IP訪問資料庫Oracle資料庫
- 【執行計劃】資料訪問方式,連線方式及方法
- 本機資料庫資料庫鏈無法訪問遠端資料庫資料庫
- 使用ssh tunnels加密連線oracle資料庫加密Oracle資料庫
- 如何使用 Node.js 訪問 SAP HANA Cloud 資料庫裡的資料Node.jsCloud資料庫