相同的 Jetty 代码,不同的线程数

Same Jetty code, different number of threads

我们在两台服务器上 运行 相同的 Jetty 服务,但发现这两种服务创建的线程数不同(50 对 ~100 个线程)。

两台服务器在 RedHat5 上 运行 相同 Java 代码(它们的内核略有不同)。然而,其中一台服务器上的 Jetty 创建的线程比另一台服务器多。怎么可能?

线程数是动态的,取决于很多因素。

根据硬件差异(cpu 核心数、网络接口数等)、内核差异,java,您在任一时刻看到的线程数可能会有很大差异差异、负载差异、活动用户数、活动连接数、每秒事务数、是否存在外部依赖项(如数据库)、异步处理的完成方式、异步 I/O 的完成方式、http/2 的使用vs http/1,websocket的使用,甚至${jetty.base}的配置差异。

至于您看到的计数,50 对 100,这对于生产服务器来说肯定是 微小的。中等繁忙系统上的许多生产服务器可以使用 500 (java) 个线程,而在非常繁忙的商品系统上,它可以在 5,000 多个范围内。即使在专用硬件(如 Azul 系统设备)上,具有多个活动网络接口的 90,000+ 线程范围也不是闻所未闻。