2016-11-06 115 views
1

JDBC连接配置中Max Wait(ms)值的最佳做法是什么? JDBCJMeter JDBC数据库测试 - 最大等待时间(ms)

我执行2种类型的测试:

  1. 20环线程的每个号码 - 以获得最大的Throupught
  2. 30分钟运行线程的每个号码 - 让响应时间

Max Wait = 10000ms我可以用10,20,30,40,60和80个线程执行JDBC请求而不出错。使用Max Wait = 20000ms,我可以更高,并执行100,120,140个线程而不会出错。这似乎是合乎逻辑的行为。

现在的问题。 我可以根据需要增加最大等待值吗?如何获得更多测试结果是否正确? 如果在某些报告中发生任何错误,我应该停止测试并且不要增加线程数量吗?我有例如来自10000个样本的误差为0.06%。这是为我的测试停止吗? 谢谢。

回答

1

此设置映射DBCP -> BasicDataSource -> maxWaitMillis parameter,根据文档:

到抛出前归还该池将等待(如果没有可用的连接)的连接的最大毫秒数异常或-1无限期地等待

它应该与您的应用程序数据库配置的相关设置匹配。如果您的目标是确定最高性能 - 只需在那里输入-1,超时将被禁用。

关于这是停止为我的测试? - 它取决于多个因素,例如应用程序在做什么,您试图实现什么以及正在进行哪种类型的测试。如果您测试的数据库安排核电厂操作比零误差阈值是唯一可以接受的。如果这是一个猫的图片库,这个错误级别可以被认为是可以接受的。

在大多数的情况下,性能测试分为几个测试执行,如:

  1. Load Testing - 使系统预期的负载下,看它是否能够处理用户
  2. 的预测量
  3. Soak Testing - 基本与负载测试相同,但保持负载时间较长。这允许检测例如内存泄漏
  4. Stress testing - 确定应用程序的边界,饱和点,瓶颈等。从零负载开始逐渐增加,直到它突然提到用户的最大数量,其他指标的相关性如响应时间,吞吐量,错误率随着用户数量的增加,检查应用程序在负载恢复正常时是否恢复等。

请参阅Why ‘Normal’ Load Testing Isn’t Enough上述测试类型的文章详细描述。

+0

更多要添加的内容,如果您想要获得更多成功请求(但响应时间更长,这是一种折衷),您可以随时为maxWait时间配置应用程序数据库配置。 (作为性能调整的一部分) –

1
Everything depends on what your requirements are and how you defined performance baseline. 

我可以根据需要增加最大等待值吗?如何获得更多测试结果是否正确?

  • 如果您在更高的响应时间内正常工作并且功能应该正常工作,那么您可以尽可能多地保留最长时间。但是,实际上,响应时间的阈值(例如执行登录事务的时间为2秒)将作为性能SLA或性能基准的一部分进行定义。所以,虽然你正在你的要求,通过增加最大一次成功,最终它被认为是失败的请求,由于高响应时间(由越过阈值)

注:DB操作更高的响应时间最终结果在Web应用程序(或最终用户)响应时间更长的情况下

如果某些报告中出现任何错误,我应该停止测试并且不要增加线程数?

  • 同样适用于错误率。如果SLA表示,某些%错误率已达成一致,那么如果实际错误率低于此值,则可以考虑测试符合SLA或性能基准。例如:如果要求表示0%错误率,那么0.1%也被认为是失败

这是停止为我的测试?

  • 你可以在任何你想要的地方停止测试。它完全基于您想要捕捉的指标。据我所知,建议继续测试,直到达到无法继续测试的地步,例如错误率达到99%等。如果错误率为0.6%,那么我建议继续通过测试,了解系统的突发点,如服务器崩溃,响应时间达到不可接受的值,内存问题等。

以下是一些很好的参考:

  1. https://www.nngroup.com/articles/response-times-3-important-limits/
  2. http://calendar.perfplanet.com/2011/how-response-times-impact-business/
  3. difference between baseline and benchmark in performance of an application
  4. https://msdn.microsoft.com/en-us/library/ms190943.aspx
  5. https://msdn.microsoft.com/en-us/library/bb924375.aspx
  6. http://searchitchannel.techtarget.com/definition/service-level-agreement
+1

非常感谢您的解答。我没有任何要求,我只是尝试将我们的应用程序的基线作为参考值来评估更改后的影响,修补程序,修补程序或应用程序中的发布。 – Samuel