JConsole可以用来监控 Java 线程池ThreadPoolExecutor的状态包括线程数量、任务执行情况、CPU 及内存使用情况等。具体操作如下启动 JConsoleWindows在 JDKbin目录下找到jconsole.exe双击运行。Linux/macOS在终端输入jconsole启动。启动 Java 应用后在 JConsole 的进程列表中选择 Java 进程点击“连接”。在 “线程” (Threads) 选项卡查看线程池的线程线程池的线程通常以pool-x-thread-y命名例如pool-1-thread-1 pool-1-thread-2可以找到这些线程并观察其状态RUNNABLE线程正在执行任务说明线程池繁忙。WAITING / TIMED_WAITING线程在等待任务可能是corePoolSize过大或任务不足。BLOCKED线程可能因锁竞争而阻塞。查看线程堆栈选中某个线程点击“堆栈跟踪”Thread Stack Trace可以看到该线程当前在执行的代码帮助排查线程卡住的原因。在 “内存” (Memory) 选项卡查看线程占用的内存如果线程池创建了大量线程占用了过多的堆空间可能需要调整maximumPoolSize或使用allowCoreThreadTimeOut(true)让空闲线程自动销毁。检查 Full GC 频率如果频繁触发 Full GC可能是线程占用的资源过多导致的。在 “MBeans” (管理 Bean) 选项卡打开java.lang:typeThreading这里可以看到所有线程的状态包括线程数、守护线程数、峰值线程数、总线程创建数等信息。监控ThreadPoolExecutor相关信息JConsole 可以通过 JMX 访问ThreadPoolExecutor的属性。在MBeans选项卡中找到java.util.concurrent.ThreadPoolExecutor相关的 MBean关注以下参数PoolSize当前线程池中的线程数ActiveCount正在执行任务的线程数CompletedTaskCount已完成的任务数TaskCount总任务数QueueSize任务队列大小RejectedExecutionCount被拒绝的任务数当任务队列满时开启 JMX 远程监控如果应用运行在服务器上JConsole 也可以进行远程监控。修改应用启动参数开启 JMX 远程监控在远程服务器上启动 Java 应用时添加 JVM 选项-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port9010-Dcom.sun.management.jmxremote.sslfalse-Dcom.sun.management.jmxremote.authenticatefalse-Dcom.sun.management.jmxremote开启 JMX 远程管理。-Dcom.sun.management.jmxremote.port9010指定 JMX 监听的端口可以更换成其他未占用的端口。-Dcom.sun.management.jmxremote.sslfalse禁用 SSL默认启用但这里为了方便调试关闭。-Dcom.sun.management.jmxremote.authenticatefalse禁用 JMX 认证默认启用为了方便调试关闭生产环境建议开启认证。如果是 Spring Boot 应用可以在application.properties配置management.endpoint.jmx.enabledtrue management.endpoints.jmx.exposure.include*确保远程服务器防火墙允许 JMX 端口JMX 远程连接使用的是TCP 端口需要在远程服务器上开放对应的端口sudofirewall-cmd--zonepublic --add-port9010/tcp--permanentsudofirewall-cmd--reload或者使用iptablesiptables-AINPUT-ptcp--dport9010-jACCEPTserviceiptables save本地使用 JConsole 连接远程服务器在本地电脑上打开JConsolejconsole选择远程进程在输入框输入远程服务器IP:9010例如192.168.1.100:9010点击“连接”进入监控界面查看线程、内存、MBeans 等信息。使用 SSH 端口转发避免开放 JMX 端口如果不想直接暴露 JMX 端口可以使用 SSH 端口转发ssh-L9010:localhost:9010 user远程服务器IP然后在 JConsole 里连接localhost:9010这样JMX 连接是通过 SSH 隧道加密的更加安全。结合 Prometheus Grafana 监控JConsole 适用于临时监控如果需要长期监控线程池状态可以结合 Prometheus 和 Grafana在应用中暴露 JMX 监控指标Spring Boot 可使用micrometer。Prometheus 采集数据。Grafana 配置仪表盘实时查看线程池状态。