# OA服务启动慢分析
# 问题现象
OA服务启动过程,某个地方耗时慢,且总长度超过15分钟。且ctp日志中明显有记录耗时较长的地方。
# 分析步骤
1、检查启动日志,统计启动总耗时长
取ctp.log,过滤【启动线程】日志,看从开始到结束时间的差值。
A8系列Tomcat中间件,V9.0及以上版本关键字:[main],V9.0以下版本:[localhost-startStop-1]
不同信创中间件启动线程名称有差异,可以先通过启动时的ctp.log找首行,查看线程名

总耗时长如果小于15分钟,优化可能性较小。
这里有一种情况,中间件日志耗时统计可能有20、30分钟,但按ctp启动线程统计的时间仅10分钟左右。
可能的原因:
- 服务器磁盘性能问题,读取seeyon文件,加载类过程慢,大量耗时在还未进入应用启动过程
- 部署有其他应用耗时拉长了整体时间,比如帆软等,导致中间件最后统计的时间长
2、统计ctp日志中的耗时关键字,查找较大的项
通过正则匹配,过滤超过10秒的耗时日志,表达式:耗时:\d{5,}

根据过滤结果可以选取一些明显耗时很长或与正常情况不同的的地方看是否可以优化
3、过滤所有启动线程的日志,人工查找耗时很长的地方
在过滤中间件日志或ctp.log中【启动线程】的部分后,人工查找等待比较久的地方,记录下来用于下一步分析。
4、通过抓取dump的方式分析上述慢的地方
重新启动OA,当启动到上述记录慢的地方时,手动或脚本方式抓取threadDump(建议在慢的地方循环多次抓取)保存,并根据时间标记好dump文件的顺序。
最后逐个打开dump文件,查找启动线程的堆栈,分析慢在什么地方。
编撰人:wangyxyf