我们在两台服务器上运行相同的 Jetty 服务,但发现这两个服务创建的线程数量不同(50 个线程与约 100 个线程)。
两台服务器都在 RedHat5 上运行相同的 Java 代码(它们的内核略有不同)。然而,其中一台服务器上的 Jetty 创建的线程比另一台服务器多。怎么可能?
最佳答案
线程计数是动态的,取决于许多因素。
根据硬件差异(CPU 核心数量、网络接口(interface)数量等)、内核差异、Java 差异、负载差异、活跃用户数、活跃线程数,您在任何一点看到的线程数可能会有很大差异。连接计数、每秒事务数、是否存在外部依赖项(例如数据库)、如何完成异步处理、如何完成异步 I/O、http/2 与 http/1 的使用、websocket 的使用,甚至 ${jetty .base} 配置差异。
至于您看到的计数,50 与 100,对于生产服务器来说确实很小。中等繁忙系统上的许多生产服务器可以使用 500 个 (java) 线程,而在非常繁忙的商品系统上,它可以在 5,000 个以上的范围内。即使在专用硬件(如 Azul 系统设备)上,具有多个 Activity 网络接口(interface)的 90,000 多个线程范围也并非闻所未闻。
关于java - 相同的 Jetty 代码,不同的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29850958/