利用jmeter java sample端口转发实现对远程数据库的压力测试

这篇具有很好参考价值的文章主要介绍了利用jmeter java sample端口转发实现对远程数据库的压力测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 需求背景

2 工具/包

2.1 Apache-jmeter

2.2 eclipse

2.3 Com.jcraft.jsch

3 插件开发

3.1 新建工程

3.2 配置buildpath

3.3 Constants类

3.4 openSSH类

3.5 closeSSH类

4 连接测试

4.1 Jar包导出

 4.2 java sample

 4.3 sql sample


1 需求背景

    对数据库进行压力测试时,需要模拟同一时间大量的sql请求发送,借助于jmeter的 sql请求可以实现,但是对RDS来说,需要进行端口映射(跳板机)访问远程数据库,对于单线程手工测试来说,可以直接通过CRT进行端口跳转访问,但是对于多线程并发访问时,各个线程都需要开启端口映射,此时CRT无法满足,借助于第三方插件,通过定制 jmeter脚本,可以帮助我们实现测试目标。

2 工具/包

2.1 Apache-jmeter

   Jmeter支持java语言,是一个开源的性能测试工具,通过扩展,可以实现非常丰富的功能,本讲义中的版本是2.11,以下是在 Windows 平台上安装和配置 JMeter 的一般步骤:

  1. 下载 JMeter

    • 访问 Apache JMeter 官方网站(https://jmeter.apache.org)。
    • 在网站上找到最新版本的 JMeter,点击下载链接。
  2. 安装 JMeter

    • 下载完成后,将 JMeter 压缩包解压到你选择的目录中,例如 "C:\Program Files"。
    • 进入解压后的 JMeter 目录,找到 jmeter.bat(Windows 批处理文件)。
  3. 配置 Java 环境

    • 在运行 JMeter 之前,确保已经安装了 Java 开发工具包(JDK)。可以在命令提示符中输入 "java -version" 来检查 Java 是否正确安装和配置。
  4. 启动 JMeter

    • 双击运行 jmeter.bat 文件,或者在命令提示符中进入 JMeter 目录并运行 jmeter.bat 文件来启动 JMeter。
  5. 创建测试计划

    • 在 JMeter 启动后,你将看到一个空白的测试计划。右键点击测试计划,选择 "Add" -> "Threads (Users)" -> "Thread Group" 来创建一个新的线程组。
    • 在线程组中,你可以设置并发用户数、循环次数等。
  6. 添加测试元件

    • 在线程组下,你可以添加各种测试元件,如 HTTP 请求、FTP 请求、数据库请求等。右键点击线程组,选择 "Add" -> "Sampler" 来添加所需的测试元件。
  7. 配置测试元件

    • 配置每个测试元件的属性,例如目标 URL、请求参数、身份验证等。右键点击测试元件,选择 "Add" -> "Config Element" 或 "Add" -> "Listener" 来添加和配置所需的元件。
  8. 运行压力测试

    • 配置完所有测试元件后,点击工具栏上的 "Start" 按钮(绿色三角形)来开始压力测试。
    • JMeter 将模拟并发用户的行为,发送请求并收集结果。

以上是在 Windows 平台上安装和配置 JMeter 的基本步骤。在安装过程中,请确保已经正确配置了 Java 环境,并根据你的需求和场景进行相应的配置和测试计划编写。

2.2 eclipse

   在eclipse中写java sample插件,以下是在 Windows 平台上安装和配置 Eclipse 的一般步骤:

  1. 下载 Eclipse

    • 访问 Eclipse 官方网站(https://www.eclipse.org)。
    • 在网站上找到适合你的开发需求的 Eclipse 版本,比如 Eclipse IDE for Java Developers、Eclipse IDE for Java EE Developers 等。
    • 点击下载链接并选择适合你操作系统的安装包。
  2. 安装 Eclipse

    • 下载完成后,解压安装包到你选择的目录中,例如 "C:\Program Files"。
    • 运行解压后的 Eclipse 可执行文件(通常是 eclipse.exe)来启动 Eclipse。
  3. 选择工作空间(Workspace)

    • 当你第一次运行 Eclipse 时,它会要求你选择一个工作空间,这是 Eclipse 存储项目和设置的地方。你可以选择接受默认的工作空间,也可以指定自己的位置。
  4. 配置插件

    • 一般情况下,你可能需要根据你的开发需求安装一些插件。Eclipse 有一个内置的插件安装器,可以通过 "Help" -> "Eclipse Marketplace" 或 "Help" -> "Install New Software" 来安装需要的插件。
  5. 配置 JDK

    • 在开始编写 Java 代码之前,需要确保已经安装了 Java 开发工具包(JDK)。打开 Eclipse 后,转到 "Window" -> "Preferences" -> "Java" -> "Installed JREs",确保已经配置了正确的 JDK。
  6. 创建项目

    • 在 Eclipse 中,可以通过 "File" -> "New" -> "Java Project" 来创建一个新的 Java 项目。根据向导指示,输入项目名称和其他信息,然后点击 "Finish" 完成创建。
  7. 编写和运行代码

    • 在创建项目后,你可以开始编写和编辑 Java 代码。创建新的类、包等,然后右键点击类名并选择 "Run As" -> "Java Application" 来运行代码。

以上是在 Windows 平台上安装和配置 Eclipse 的基本步骤。在安装过程中,记得仔细阅读安装向导的说明,根据个人需求进行定制和配置。

2.3 Com.jcraft.jsch

com.jcraft.jsch 是一个 Java 实现的 SSH2 协议库,它提供了在 Java 应用程序中进行 SSH 连接和操作远程主机的功能。它是一个开源库,可以用于开发需要通过 SSH 协议进行远程通信的应用程序。

使用 com.jcraft.jsch 库,你可以实现以下功能:

  1. SSH 连接:建立与远程主机的安全连接,并进行身份验证和授权。

  2. 远程命令执行:执行远程主机上的命令,并获取命令的输出结果。

  3. 文件传输:上传和下载文件到远程主机。

  4. 端口转发:通过 SSH 隧道实现本地端口与远程主机之间的转发。

下面是一个简单的示例代码,演示如何使用 com.jcraft.jsch 连接到远程主机并执行命令:

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();

            // 创建 SSH session
            Session session = jsch.getSession(username, host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            // 创建 SSH channel
            Channel channel = session.openChannel("exec");

            // 设置要执行的命令
            ((ChannelExec) channel).setCommand("ls -l");

            // 连接并执行命令
            channel.connect();

            // 获取命令输出结果
            InputStream in = channel.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // 关闭连接
            channel.disconnect();
            session.disconnect();
        } catch (JSchException | IOException e) {
            e.printStackTrace();
        }
    }
}
以上代码通过 com.jcraft.jsch 库连接到远程主机,并执行了一个简单的 ls 命令来列出远程主机的文件列表。你可以根据需要扩展和修改这个示例,实现更复杂的功能,如文件传输、端口转发等。

3 插件开发

3.1 新建工程

   新建一个java工程,将下载下来的Com.jcraft.jsch 源码导入,并新建一个package,用于编写java sample,结构如图所示。

利用jmeter java sample端口转发实现对远程数据库的压力测试

3.2 配置buildpath

将%JMETER_HOME%\lib 及 %JMETER_HOME%\lib\ext 导入

利用jmeter java sample端口转发实现对远程数据库的压力测试

3.3 Constants类

该类主要配置运行参数,例如数据库连接,用户名,数据库密码,端口号等,如果这些变量基本是不变的话可以写在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中,定义了参数以及默认值,并开启端口转发,以及由于环境问题,这些参数并不是固定的,这种写死在代码中的方式就不灵活,JMETER 提供了读取参数的方法,参见

/*openSSH.java*/

利用jmeter java sample端口转发实现对远程数据库的压力测试

 如图

利用jmeter java sample端口转发实现对远程数据库的压力测试

入口函数

利用jmeter java sample端口转发实现对远程数据库的压力测试

入口函数是为了让jmeter找到对应的函数入口,见图

利用jmeter java sample端口转发实现对远程数据库的压力测试

 注意,端口应该作参数化处理,多个线程占用一个端口会出现连接失败的问题。一个SQL请求结束后,应释放该线程占用的端口资源,需要将该线程已占用的端口关闭。

3.5 closeSSH类

该类主要用于释放线程占用的端口

/*closeSSH.java*/

入口函数:

利用jmeter java sample端口转发实现对远程数据库的压力测试

 利用jmeter java sample端口转发实现对远程数据库的压力测试

4 连接测试

4.1 Jar包导出

分别将项目导出为 JAR包,导出 2次 ,命名为openSSH.jar 和 closeSSH.jar,分别用于开启端口sample 以及关闭关口sample

利用jmeter java sample端口转发实现对远程数据库的压力测试

 导出时注意选择对应的入口函数

利用jmeter java sample端口转发实现对远程数据库的压力测试

利用jmeter java sample端口转发实现对远程数据库的压力测试

 将2个 jar文件 以及 mysql jdbc jar 放到%JMETER_home%\lib\ext目录下,然后以admin身份运行jmeter。

利用jmeter java sample端口转发实现对远程数据库的压力测试

 4.2 java sample

在Jmeter中 新建线程组,定义一个用户定义变量以保存随机端口号,新建java sample

利用jmeter java sample端口转发实现对远程数据库的压力测试

 该 java请求用于打开端口,选择类名称,填入适当的参数,注意localport那一栏填写随机值。

利用jmeter java sample端口转发实现对远程数据库的压力测试

 4.3 sql sample

首先配置JDBC连接

利用jmeter java sample端口转发实现对远程数据库的压力测试

利用jmeter java sample端口转发实现对远程数据库的压力测试

 注意:Variable Name不能为空;最大连接数设置要>jmeter线程数,端口号用随机数替代

配置完jdbc连接后,新建sql请求就可以了

利用jmeter java sample端口转发实现对远程数据库的压力测试

 最后加上关闭端口的java sample

利用jmeter java sample端口转发实现对远程数据库的压力测试

 开始测试,注意观察jmeter console日志及sql结果树

利用jmeter java sample端口转发实现对远程数据库的压力测试

利用jmeter java sample端口转发实现对远程数据库的压力测试

利用jmeter java sample端口转发实现对远程数据库的压力测试

 可见打开了57734的端口映射,而且正确进行了查询,成功实现了模拟SSH进行端口转发的需求。文章来源地址https://www.toymoban.com/news/detail-498052.html

到了这里,关于利用jmeter java sample端口转发实现对远程数据库的压力测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java使用Netty实现端口转发&Http代理&Sock5代理服务器

    这里总结整理了之前使用Java写的端口转发、Http代理、Sock5代理程序,放在同一个工程中,方便使用。 开发语言:Java 开发框架:Netty 端口转发: HTTP代理服务器,支持账号密码认证 Sock5代理服务器,支持账号密码认证 支持连接后端时直接连接或采用代理连接,也后端代理连接认

    2024年01月25日
    浏览(48)
  • 「Cpolar」内网穿透实现在外远程连接MongoDB数据库【端口映射】

    💂 作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较

    2024年02月06日
    浏览(47)
  • 如何实现无公网ip固定TCP端口地址远程连接Oracle数据库

    Oracle,是甲骨文公司的一款关系数据库管理系统,它在数据库领域一直处于领先地位。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据

    2024年01月18日
    浏览(43)
  • 榨干家庭宽带公网ip------IP直连NAS远程访问(端口转发)

    基本情况:联通千兆宽带有公网ip,极空间z2s,路由器TPlink xdr4288 打开路由器后台页面,进入   工具箱/虚拟服务器, 点击    新建,需要输入  外部端口:和内部端口号相同                                        内部端口:NAS后台端口转发设置,查到端

    2024年02月15日
    浏览(31)
  • 解决问题:无法与(IP) 建立连接: 远程主机密钥已更改,端口转发已禁用

    本文将介绍当尝试通过SSH等远程连接方式连接到特定IP地址时可能遇到的一个常见问题:“无法与(IP)建立连接: 远程主机密钥已更改,端口转发已禁用”。我们将从报错问题、报错原因和解决方法三个方面来详细解释并处理这个问题。 用户尝试通过SSH等远程连接方式连接到某个

    2024年04月26日
    浏览(29)
  • 【踩坑】通过端口转发解决Jupyter远程无法连接ERR_CONNECTION_TIMED_OUT

    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 方式一:SSH 方式二:Mobaxterm  如果你也试了各种方法,配置文件也改了,还是无法连接上,那你适合本教程。 本教程其实是个曲线救国的策略:通过 端口转发 来实现访问。 形式为: 比如 远程jupyter运行在8888端口,远

    2023年04月08日
    浏览(35)
  • 路由器端口转发&远程桌面控制:一电脑连接不同局域网的另一电脑

    一、引言          路由器端口转发 :指在路由器上设置一定的规则,将外部的数据包转发到内部指定的设备或应用程序。这通常需要对路由器进行一些配置,以允许外部网络访问内部网络中的特定服务和设备。端口转发功能可以实现多种应用场景,例如远程桌面、FTP、

    2024年04月15日
    浏览(44)
  • vscode 端口转发实现端口映射,实现端口自由

    用vscode连接server进行开发, 是非常方便的,但很多时候,server的端口开放的很有限,那么就可以利用vscode进行端口映射   举一个应用场景: 先通过A利用vscode 连接B,然后再vscode 的port窗口进行端口转发,比如将22端口映射到A本地的5000, 然后再通过Host利用vscode连接A,利用端

    2024年02月16日
    浏览(29)
  • 防火墙实现端口转发

    目的:通过使用linux中的iptables和firewalld来实现本地端口转发和远程端口转发。 一、iptables 1.本地端口转发 比如当我们访问192.168.87.5的1234端口时,自动帮我们转到80端口 命令如下: iptables -t nat -I PREROUTING -p tcp --dport 1234 -j REDIRECT --to-ports 80 验证:  2.远程端口转发 当我们访问

    2024年02月03日
    浏览(29)
  • Nginx 实现端口转发

    首先我们需要找到服务器部署的nginx的配置文件nginx.conf: 找到如下代码段实现配置端口转发 其中有几个配置,我们一个一个讲: 表示你该配置的server所监听的端口号。 用于设置虚拟主机服务名称,如:127.0.0.1 、 localhost 、域名 例如,在windows本地主机上进行修改该配置,则

    2023年04月18日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包