为什么Jetty消耗的线程比start.ini文件中指定的要多?



我的java spring应用程序在Jetty 9.48中运行。这些是start.ini文件中的属性:

jetty.http.acceptors=30
# jetty.http.selectors=200
jetty.threadPool.minThreads=200
jetty.threadPool.maxThreads=1000
jetty.threadPool.idleTimeout=5000
jetty.http.host=0.0.0.0
jetty.http.port=8080
jetty.http.connectTimeout=2000
jetty.http.reuseAddress=true
jetty.lowresources.accepting=false
jetty.output.buffer.size=32768
jetty.httpConfig.outputAggregationSize=32768
jetty.httpConfig.requestHeaderSize=16384
jetty.httpConfig.responseHeaderSize=16384
jetty.httpConfig.sendServerVersion=false
jetty.httpConfig.sendDateHeader=false
jetty.server.stopAtShutdown=true
jetty.server.stopTimeout=5000
jetty.server.dumpAfterStart=false
jetty.server.dumpBeforeStop=false
jetty.deploy.scanInterval=0
jetty.console-capture.dir=/yyyy_mm_dd.stderrout.log
jetty.console-capture.retainDays=90
jetty.console-capture.timezone=UTC
jetty.debug.retainDays=90

当我运行htop时,我看到:"Tasks: 83, 3030 thr, 41 running"。ps hUH p <JETTY PROCESS PID> | wc -l给我2876个jetty线程计数。这些数字与jetty.threadPool.maxThreads比较是否正确?如果是这样,为什么maxThreads不限制线程数?为什么现有线程和正在运行的线程之间存在如此大的差距?

要清楚,我希望Jetty消耗更少的内存。我假设大量的线程会影响它。因为目前jetty几乎消耗了所有可用内存(120/125G),但OOM从未发生。我可能不明白一些基本的概念,但如果你能帮我弄清楚,我会很感激的。

x现在处于社区支持终止(即将结束生命周期)

见:https://github.com/eclipse/jetty.project/issues/7958


你没有注意到这些线程是什么

Jetty线程的名称将以qtp开头。

所有其他线程都来自非Jetty的东西。

最新更新