使用JMeter测试Cloudant连接池

时间:2018-09-05 00:30:51

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

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

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

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

我期望连接池有更多的最大连接,我的测试会更快,但是似乎并没有影响我的测试。有人知道发生了什么吗?

1 个答案:

答案 0 :(得分:0)

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

  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来确定您的应用程序在哪里花时间。