故障现象
现象:系统响应缓慢
故障处理过程
中午12:13发生响应时间告警,同时有xxx-pro无法获取数据库连接的报错,
12:15 小A查看监控发现有两台服务器响应时间出现明显升高,
12:17 小B重启了这两台服务器,响应时间恢复正常
12:48收到xxx-pro无法获取数据库连接告警,
12:51运维导出了dump文件,从运维导出的文件分析,
告警是因为内存占满引起,7.1个G的内存中,异步线程占了6.5个G,主要是因为执行打印报销单引起,
12:53运维陆续重启了响应时间较高的几台xxx-pro的服务器后,12:58左右响应时间恢复正常
故障原因
部分服务器内存占满引起xxx系统出现fullgc,7.1个G的内存中,异步线程占了6.5个G,主要是因为调用打印报销单引起
反思与改进方案
- xxx-pro中包含的模块太多,定位问题需要通过导出服务器的内存和线程使用情况分析,定位到具体的调用链路后做优化,如果可以把xxx-pro中的内容拆分到对应的服务中,把xxx-pro拆得细一点,对提升定位问题的效率会有很大的帮助
- 目前的改进措施是整理xxx-pro和打印相关的情况,共有16个请求,志成协助在nginx上对这部分请求做了转发,新增了两台服务器,专门处理打印请求,打印相关的请求全部转发到这两台新增的服务器上
- 需要分析打印模块是否存在内存泄漏
- 目前有一种方案通过采用仿真模式进行jasper打印内容的填充来做优化,需要先在测试环境做验证