如何使用Tomcat设置servlet可以处理的最大并发请求数

时间:2014-12-15 15:52:23

标签: java tomcat servlets hyperthreading

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

我的问题是:我们是否也必须考虑基础操作系统?

例如:

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

因此,最多4个请求可以同时处理1个请求等待?假设每个请求都需要一些时间才能完成。 我们还必须考虑超线程吗?

2 个答案:

答案 0 :(得分:1)

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

很少有人提出这个问题。

1。)每个请求需要处理多少time

2.。thread pool中使用/配置了多少个线程。

3.。)已配置了多少server connections

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

  

server.xml 文件中指定 maxThreads ,指定   可以处理的最大并发请求数。如果没有   如果指定,则此属性设置为200。

来自统计/博客

  

在适度硬件上具有默认设置的单个Tomcat服务器应该   容易处理2k请求/秒,假设它没有太多   根据要求开展工作。如果处理一个请求需要500毫秒,   你可能需要增加线程中的线程数   游泳池,你可能会开始推动极限。

答案 1 :(得分:1)

通过猜测,没有简单的方法来提出这些数字。通常,您不必指定任何可能导致机器堵塞的风险。但与此同时,网络接口速度太慢,以至于在您拥塞网络之前,很难拥塞Web服务器(除非每个请求需要很长时间才能处理)。

我的建议是单独保留这些值并监视服务器以查看它在负载下的行为。如果可以,可以进行一些负载测试 - 有一些很棒的工具可以模拟成千上万的用户同时使用你的服务器。

同样来自经验:数据库是瓶颈。将会有一些问题会导致一切停顿。事先很难分辨出哪些因为性能取决于很多东西:数据库中的数据量,索引,正在执行的实际SQL,磁盘速度,数据库和Web服务器之间的网络只是最重要的的。