【问题标题】:Testing Cloudant connection pool with JMeter使用 JMeter 测试 Cloudant 连接池
【发布时间】:2018-09-05 00:30:50
【问题描述】:

我制作了两个应用程序(一个使用 Java,一个使用 NodeJS)连接到 Cloudant 的 Bluemix 实例,我正在尝试测试我的连接池设置。

对于 Java,我使用带有和不带有 OkHttp 依赖项的 java-cloudant 库。我相信使用默认连接池的最大连接数为 5。使用 OkHttp 时,我将最大连接数设置为 1、5、200 和 1000。在 JMeter 中使用 200、500、1000 个线程进行测试,我得到了相同的结果使用默认连接池和使用具有不同最大连接设置的 OkHttp 之间的结果。

使用 NodeJS,我使用的是 nodejs-cloudant 库,结果类似于 Java。

我希望连接池的最大连接数更多,我的测试会更快,但这似乎不会影响我的测试。有谁知道怎么回事?

【问题讨论】:

    标签: java node.js jmeter ibm-cloud cloudant


    【解决方案1】:

    您的假设是正确的,如果连接池小于传入请求的数量,则请求将排队并且性能会降低。但是,我至少可以看到两种情况并非如此:

    1. 您并没有真正在 JMeter 中模拟 200、500 等线程。根据您的配置,您可能会遇到一些线程已经完成其工作而一些甚至尚未启动的情况。仔细检查您真正使用了多少线程,即Active Threads Over Time 侦听器或HTML Reporting Dashboard 的等效图表。查看 JMeter 测试结果:Why the Actual Users Number is Lower than Expected 了解常见错误的详细说明。
    2. 您的应用程序无法处理那么多请求,也就是说,您已达到系统的bottleneck,因此在线程数达到一定数量时,吞吐量会随着虚拟用户数量的增加而增加,这就是重点最大性能称为saturation point,则吞吐量保持不变甚至下降。因此,请检查您的应用程序是否有足够的空间来运行资源(RAM、CPU、网络、磁盘) - 您可以为此使用JMeter PerfMon Plugin 或使用profiling tools 来确定您的应用程序在哪里花费时间。

    【讨论】:

    • 感谢您的回复!当我有机会时,我会检查你列出的两种情况,并用结果回复你。我刚刚意识到为什么我没有得到我期望的结果,例如最多 5 个连接。在我的应用程序中,我做了一个获取文档,然后休眠 5 秒以模拟延迟,但我刚刚意识到 5 秒的休眠不会影响到池的连接。我预计 200 个线程和 5 个最大连接的总运行时间为 200 秒,但只用了 38 秒。
    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多