Tomcat日志中的线程信息主要用于监控并发处理状态、定位性能瓶颈(如线程阻塞、请求堆积)。以下是具体查看方法:
catalina.out或应用日志文件直接查看Tomcat的主日志文件(catalina.out,位于$CATALINA_HOME/logs目录)会记录线程的活动轨迹。线程通常以[线程名]的形式标注,例如[http-bio-8080-exec-5](表示处理HTTP请求的执行线程)。
grep命令过滤线程相关信息,例如:grep -E '\[http-bio|exec\]' /path/to/tomcat/logs/catalina.out
这会输出所有包含线程名的日志条目,从中可看到线程正在处理的请求(如Handling request [POST /myapp])。DEBUG(需修改logging.properties文件),会记录更详细的线程活动(如线程池调度细节)。使用tail -f命令实时跟踪日志文件的新增内容,快速捕捉线程的实时状态(如新增请求、线程阻塞):
tail -f /path/to/tomcat/logs/catalina.out | grep -E '\[http-bio|exec\]'
该命令会持续输出最新的线程相关日志,适合排查突发性能问题。
jstack获取线程堆栈快照若需深入分析线程状态(如死锁、长时间等待),可通过jstack工具导出线程堆栈信息:
ps -ef | grep java | grep tomcat | awk '{print $2}'
jstack -l <PID> > thread_dump.txt
thread_dump.txt:"RUNNABLE"(运行中线程)、"BLOCKED"(阻塞线程)、"WAITING"(等待线程)等关键字,定位线程阻塞或资源竞争问题。若Tomcat安装了Manager应用(默认路径/manager),可通过浏览器直观查看线程池状态:
http://<服务器IP>:8080/manager/html,输入管理员账号密码登录。maxThreads)等指标。JMX(Java Management Extensions)提供更全面的线程监控能力,支持动态查看线程池配置和实时状态:
catalina.sh,添加以下参数):export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
localhost:1099。MBeans标签下,展开org.apache.tomcat→ThreadPool,查看线程池的各项指标(如currentThreadsBusy:当前繁忙线程数)。以上方法覆盖了从基础日志查看、实时监控到深入分析的不同场景,可根据实际需求选择使用。