如何在 jmeter 中通过隧道配置 PostgreSQL 数据库

Posted

技术标签:

【中文标题】如何在 jmeter 中通过隧道配置 PostgreSQL 数据库【英文标题】:How to configure PostgreSQL database over the tunnel in jmeter 【发布时间】:2019-06-19 16:26:33 【问题描述】:

我正在使用 jmeter 来测试一个使用 PostgreSQL 的应用程序。我可以使用数据库应用程序提供的 ssh 隧道连接到数据库。 有人可以告诉我如何使用 jmeter 做到这一点。我在 jmeter 数据库连接配置元素中没有看到任何 ssh 隧道选项。

【问题讨论】:

【参考方案1】:

您可以使用端口转发,如本答案所述:

https://***.com/a/1968446/460802

【讨论】:

【参考方案2】:

    我认为您不应该直接对数据库进行负载测试,your load test should simulate real-life application under test usage。因此,与其测试数据库,不如关注应用程序本身并将其视为black box,因此我的一般建议是重新考虑该方法。

    1234563 TCP 协议的性质和对通过 SSH 发送的数据进行加密/解密所需的巨大 CPU 占用空间。因此,我建议与网络管理员交谈,并要求他们暂时打开 Postgres 网络端口到您正在运行 JMeter 的机器,或者为您提供对可以安装 JMeter 的机器的访问权限,该机器将具有访问权限直接到数据库(最好在同一个subnet/物理位置,否则你might be suffering from high latencies)

    如果由于任何原因上述说明不适用于您 - 您可以使用 SSH Local Forwarding 将远程 Postgres 端口映射到您的本地端口,相关命令为:

    ssh -L 2345:localhost:5432 username@your_postgresql_server
    

    完成后,您应该能够连接到 Postgres 实例,因为它本地安装在端口 2345 上,例如:

    postgres://localhost:2345/your_database
    

【讨论】:

我不是负载测试数据库,我只需要在运行所有负载测试后检查一个值。我尝试了#3,但我看到 ssh: connect to host username@your_postgresql_server port 22: Operation timed out。您能否建议为什么会发生这种情况以及如何解决这个问题。

以上是关于如何在 jmeter 中通过隧道配置 PostgreSQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中通过 SSH 隧道运行远程命令

在 Java 中通过 SSH 隧道连接到 Mongo 数据库

jmeter中通过beanshell生成身份证号

jmeter中通过beanshell访问eclipse中导出jar中的java类的方法

我们可以通过远程机器运行一个线程组,而在 JMeter 中通过本地主机运行另一个线程组吗?

如何在 Blazemeter 测试中通过 Jenkins 在 .jmx 文件中设置参数