【发布时间】:2018-05-01 23:40:30
【问题描述】:
我有一个多线程 Java 服务器,我正在监视它正在使用多少线程。最近,我注意到操作系统报告的应用程序线程比 JMX 多得多。例如:
cat /sys/fs/cgroup/pids/system.slice/NAME.service/pids.current
294
ps -eLf | grep java | grep NAME | wc
294
curl -s localhost:9102 | grep jvm_threads_current
223.0
9102 端口托管Prometheus JMX 代理。所以我们看到区别在于 71 个线程 - 与 JMX 相比,操作系统看到了 71 个额外的线程。虽然我可以假设 Java 可能会运行一些未在 JVM/JMX 统计中报告的工作线程,但 70 多个线程听起来很多。这里有什么问题吗?这两个衡量的是不同的东西吗?可能有普罗米修斯错误吗?或者这些线程是正常的,如果是这样 - 它们到底在做什么?
JVM 版本是1.8.0_162-8u162-b12-1~deb9u1-b12 在 Linux 上运行。
【问题讨论】:
标签: java multithreading jmx prometheus