java - 可以使用多少并发线程来对 Web 应用程序进行负载测试?

标签 java tomcat junit jmeter

我需要了解我的 Web 应用程序的性能并对其进行负载测试。该应用程序当前具有最多 25 个线程的 Tomcat 配置,并且有两个这样的服务器。

这是否意味着我应该对 50 个并发请求进行负载测试? 在有更多请求的情况下会发生什么;它会进入Tomcat中的线程等待队列吗? 如果它进入线程等待队列,我可以用超过 50 个请求测试应用程序吗?

最佳答案

Tomcat 可以在 2 种模式下工作:

  • BIO(阻塞 IO),其中 1 个线程最多可以服务 1 个连接
  • NIO(非阻塞 IO),其中 1 个线程可以服务更多的连接

很可能您的应用程序正在使用后一种,查看 Understanding the Tomcat NIO Connector and How to Configure It概览指南。另一方面,即使在使用 BIO 连接器的情况下,应用程序可能仍然能够足够快地运行以服务 50 多个用户。

在这两种情况下,您都应该将后端视为“黑匣子”(假设您对配置一无所知)并专注于测试非功能性需求。

您应该考虑的基本性能测试类型是:

  • 负载测试:检查您的系统在预期数量的并发用户使用时的表现。
  • 浸泡测试:相同,但假设测试持续时间更长,即过夜或周末。这样你就可以看到是否有任何 memory leaks 、日志轮换如何工作、应用程序是否会自行清理以免磁盘空间不足等。
  • 压力测试:确定应用程序边界的过程,即从 1 个虚拟用户开始并增加负载,直到应用程序响应时间在合理的范围内或开始出现错误。

参见 Why ‘Normal’ Load Testing Isn’t Enough了解更多信息。

关于java - 可以使用多少并发线程来对 Web 应用程序进行负载测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243868/

相关文章:

java - TransformerHandler 输出 CDATA 部分

java - 如何使 BoxLayout 表现为垂直 FlowLayout?

java - Tomcat 7 主页未显示

java - Tomcat:在日志中获取 'Character decoding failed';可能的恶意攻击?

java - 如何使用 Mockito 在 java 中模拟 new Date()

javascript - 从网页 Java 中删除部分网站

java - Spring Boot 应用程序 - 在 tomcat 上找不到 404

java - 在 tomcat 容器中运行 JUnit 测试用例

java - Junit测试期望值

java - android AccessibilityService 突然停止触发事件 - 请检查我的代码