我注意到默认的 tomcat 7 线程池大小似乎是 200。
但是普通的 CPU 似乎有 16 个内核。
所以只能并行执行 16 个线程
为什么tomcat使用这么多线程。
我注意到默认的 tomcat 7 线程池大小似乎是 200。
但是普通的 CPU 似乎有 16 个内核。
所以只能并行执行 16 个线程
为什么tomcat使用这么多线程。
多年来,许多单核计算机已经出现并且能够以“伪并行”模式运行功能,也就是说,您可能有 16 个线程以真正并行模式运行,而其他线程以伪并行模式运行。
有关更多信息,请查看:并行计算
为了回答您的问题,这些线程对于处理请求很有用,其中一些将用于处理 http 请求,而其他线程将用于调用应用程序逻辑。
在 200 个线程中,只有 16 个线程在 16 核机器上运行。典型 Web 应用程序的逻辑是执行一些轻量计算和繁重的数据库查询。在 200 个线程中,只有少数在做计算,大部分都在等待数据库的响应。
大多数现实生活中的 Web 应用程序使用数据库来存储应用程序数据,因此往往是磁盘密集型的。太多线程同时访问磁盘会导致磁盘抖动。因此,限制线程数在具有数据库的 Web 应用程序上确实有意义。