如何使用Tomcat设置一个servlet能够处理的最大并发请求数量

3

我想知道一个使用Servlet构建的Web应用程序(使用Tomcat 7)可以处理多少个并发请求。我已经配置了server.xml文件中的maxThreads、acceptCount和minSpareThreads属性。

我的问题是:我们是否还需要考虑底层操作系统?

例如:

maxThreads= 5;
acceptCount= 1;
OS= 1 processor with 4 cores; 

那么最多同时处理4个请求,有1个请求在等待,假设每个请求都需要一定的时间才能完成。我们是否还需要考虑超线程技术?


你想要“设置”还是“估算”?不清楚你的问题。 - user207421
2个回答

1

好问题,但没有直接的答案。您需要自己调整服务器参数并根据负载进行测试。

我脑海中浮现出几个问题。

1.) 每个请求处理需要多长时间。

2.) 在线程池中使用/配置了多少线程。

3.) 配置了多少服务器连接。

操作系统和服务器在这方面并不会起到很大的作用。一旦您完成设置参数并将它们推向极限,我们甚至可以考虑硬件。

server.xml 文件中,您可以指定 maxThreads,该属性指定可以处理的最大同时请求数。如果未指定,则将此属性设置为 200。

来自统计/博客

一个使用默认设置的Tomcat服务器在适度的硬件上应该可以轻松处理2k个请求/秒,假设每个请求不需要太多工作量。如果处理一个请求需要500毫秒以上的时间,则可能需要增加线程池中的线程数,并且您可能会开始推动极限。

1

仅凭猜测很难得出这些数字。通常情况下,为避免机器堵塞,您无需指定任何内容。但同时,网络接口速度非常慢,除非每个请求处理时间很长,否则很难拥堵Web服务器之前就会拥堵网络。

我的建议是保留这些值并监控服务器以了解它在负载下的行为。如果可以,进行一些负载测试-有一些很棒的工具可以模拟数千名用户同时使用您的服务器。

还从经验中发现:数据库是瓶颈。会有一些查询会使所有内容停滞。很难提前知道哪些查询是因为性能取决于许多因素:数据库中的数据量、索引、实际执行的SQL、磁盘速度、DB和Web服务器之间的网络等仅列举最重要的几个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接