Tomcat线程模型

时间:2019-01-15 15:41:05

标签: java tomcat

好奇地发现部署在tomcat上的我的应用程序可以满足的最大并发请求数。

我所知道的:

在tomcat配置中,有一些参数可以帮助我解决问题,例如:

  1. acceptCount -在使用所有可能的请求处理线程时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。

  2. MaxConnections -服务器在任何给定时间将接受和处理的最大连接数。达到此数目后,服务器将接受但不处理另一个连接。

我想知道的:

  1. 以上参数是否足以了解我的应用程序可以处理的“并发”请求的最大数量?

  2. 假设最大连接数为200,则意味着如果有200个并发请求进入,则将产生200个线程(每个请求1个)。 然后说,这些都是CPU密集型请求/操作。那么生成200个线程是否会降低性能呢?我相信,如果请求/操作占用大量CPU,那么从JVM派生出来的最大线程数应该可以补充内核数。 (例如16)。

1 个答案:

答案 0 :(得分:2)

  

好奇地发现部署在tomcat上的我的应用程序可以满足的并发请求的最大数量。

您不能不考虑许多参数,例如:

  • 硬件马力(多少个CPU,什么样的CPU,多少内存)
  • 工作量的实际特征

换句话说:您的问题不可能有通用/通用答案。如果您真的担心确切的细节,那么进行实验是唯一的方法。

在功能强大的先进服务器上运行的“混合类型”工作负载应能够轻松并行处理200个线程。但是,当然,如果每个请求导致成千上万的IOPS,或需要1个小时的实际CPU时间,那么并行执行10个请求可能会使您失望。