我需要了解我的 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/