技术文章
Java线程转储十分有助于分析应用程序的瓶颈和死锁情况。在对运行的应用程序进行监控或者问题追踪时,当从日志中无法发现明显的线索,Thread Dump是主要的方式。O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]服务器提供了启用定期进行thread dump(stack trace)的能力。本篇主要介绍如何开启O2OA开发平台的Thread Dump功能。
1、O2Server服务器正常运行,系统安装部署请参考文档《如何在服务器上安装部署O2OA》
2、以拥有管理员权限的用户账号登录O2OA(翱途)开发平台,如:xadmin
在对运行的应用程序进行监控或者问题追踪时,当从日志中无法发现明显的线索,Thread Dump是主要的方式。在设计中一般会在系统已经故障的情况下通过jstack等jcmd等工具运行thread dump,但是往往无法获取故障前的状态。在O2OA开发平台提供了定时自动执行Thread dump的功能,可以在较长时间内记录线程状态,以便于对比故障前后线程执行状态。
O2OA 可以通过配置项让服务器自动执行thread dump,在node_xxx.json配置文件中的stackTrace段落中进行配置。
{ "stackTrace": { "enable": true, "interval": 20 } }
enable:是否启用此功能,默认为false。
interval:执行间隔默认为20秒执行一次。
每次执行将在服务器的logs目录下创建一个jstack_xxx_20220808101010.txt的文件,其中文件名的jstack是固定的,xxx为node的节点名,数字部分表示创建时的时间戳。
请注意:系统自动保留24小时内的县城转储文件,如果20秒执行一次,那么24小时将产生4320个转储文件。
市面上可使用的工具比较多,我们推荐使用 IBM Thread and Monitor Dump Analyzer for Java (TMDA)进行线程分析,如下图所示:
分析的过程我们就不在此文中赘述。
以上是如何开启定期执行Java线程转储Thread dump(stack trace)的相关说明,希望对您有帮助。