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
- 資料庫訪問幾種方式對比資料庫
- Spring Boot入門(七):使用MyBatis訪問MySql資料庫(xml方式)Spring BootMyBatisMySql資料庫XML
- 使用 @NoRepositoryBean 簡化資料庫訪問Bean資料庫
- Spring Boot入門(六):使用MyBatis訪問MySql資料庫(註解方式)Spring BootMyBatisMySql資料庫
- Jmeter 連結資料庫後批次使用的問題JMeter資料庫
- JDBC資料庫訪問JDBC資料庫
- Spring框架訪問資料庫的兩種方式的小案例Spring框架資料庫
- Oracle資料庫限制訪問IPOracle資料庫
- 外網訪問MySQL資料庫MySql資料庫
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- Spring Boot入門(五):使用JDBC訪問MySql資料庫Spring BootJDBCMySql資料庫
- 如何使用 Node.js 訪問 SAP HANA Cloud 資料庫裡的資料Node.jsCloud資料庫
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- 『動善時』JMeter基礎 — 41、使用JMeter連線資料庫(MySQL)JMeter資料庫MySql
- jmeter連線資料庫JMeter資料庫
- Jmeter壓則資料庫JMeter資料庫
- 【磐維資料庫】透過python訪問磐維資料庫資料庫Python
- Linux SSH遠端訪問Linux
- 使用ssh隧道穿透NAT訪問內網主機穿透內網
- 使用holer從外網ssh訪問樹莓派樹莓派
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- Xamarin SQLite教程資料庫訪問與生成SQLite資料庫
- Python學習之旅:訪問MySQL資料庫PythonMySql資料庫
- jmeter 連線 sqlserver 資料庫JMeterSQLServer資料庫
- jmeter連結mysql資料庫JMeterMySql資料庫
- SSH遠端訪問及控制
- 遠端訪問及控制——ssh
- SQL Server建立使用者只能訪問指定資料庫和檢視SQLServer資料庫
- DBA 日常:規模使用者資料庫訪問許可權管理資料庫訪問許可權
- Spring Boot 2.x基礎教程:使用JdbcTemplate訪問MySQL資料庫Spring BootJDBCMySql資料庫
- 在Golang中如何正確地使用database/sql包訪問資料庫GolangDatabaseSQL資料庫
- 使用R2DBC實現資料庫的響應式訪問資料庫
- jdbc訪問KingbaseES資料庫SocketTimeoutException Read timed outJDBC資料庫Exception
- 3.2.4 開啟資料庫到限制訪問模式資料庫模式
- Pandas庫基礎分析——資料生成和訪問
- Holer實現外網訪問SQLServer資料庫SQLServer資料庫
- Holer實現MongoDB資料庫外網訪問MongoDB資料庫