1

JDBC 连接配置中 Max Wait (ms) 值的最佳实践是什么? JDBC

我正在执行两种类型的测试:

  1. 每个线程数 20 个循环 - 以获得最大吞吐量
  2. 每个线程数 30 分钟的运行时间 - 以获得响应时间

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

现在提问。我可以根据需要增加 Max Wait 值吗?如何获得更多测试结果是正确的方法吗?如果某些报告中出现任何错误,我应该停止测试并且不增加线程数吗?我从 10000 个样本中得到了例如 0.06% 的错误。这是我的测试站吗?谢谢。

4

2 回答 2

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

我可以根据需要增加 Max Wait 值吗?如何获得更多测试结果是正确的方法吗?

  • 如果您可以接受更长的响应时间并且该功能应该可以正常工作,那么您可以根据需要保持最大时间。但是,实际上,会有响应时间的阈值(例如,执行登录事务的 2 秒),您将其定义为性能 SLA 或性能基线的一部分。因此,尽管您通过增加最大时间使请求成功,但由于响应时间长(通过超过阈值),最终它被视为失败请求

注意: DB 操作的更高响应时间最终会导致 Web 应用程序(或最终用户)的响应时间更长

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

  • 这同样适用于错误率。如果 SLA 表示同意某个 % 错误率,那么如果实际错误率低于 SLA 或性能基线,则您可以认为该测试符合 SLA 或性能基线。eg:如果需求说 0% error rate,那么 0.1% 也被认为是failed

这是我的测试站吗?

  • 您可以在任何您想要的点停止测试。它完全基于您要捕获的指标。据我所知,建议继续测试,直到达到无法继续测试的程度,例如错误率达到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. 应用程序性能的基线和基准之间的差异
  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
于 2016-11-06T15:09:50.537 回答
1

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

池将等待(当没有可用连接时)在抛出异常之前返回连接的最大毫秒数,或 -1 无限期等待

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

关于我的测试是否停止?- 这取决于多种因素,例如应用程序在做什么、您要达到的目标以及正在进行的测试类型。如果您测试协调核电站运行的数据库,那么零错误阈值是唯一可以接受的。而如果这是一个猫的图片库,这个错误级别可以认为是可以接受的。

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

  1. 负载测试- 将系统置于预期负载下,看看它是否能够处理预测的用户数量
  2. 浸泡测试- 与负载测试基本相同,但要长时间保持负载。这允许检测例如内存泄漏
  3. 压力测试- 确定应用程序的边界、饱和点、瓶颈等。从零负载开始并逐渐增加它直到它打破提及最大用户数量、响应时间、吞吐量、错误率等其他指标的相关性用户数量的增加,检查负载恢复正常时应用程序是否恢复等。

有关详细描述的上述测试类型,请参阅为什么“正常”负载测试还不够文章。

于 2016-11-07T06:15:21.977 回答