生产环境上突然出现系统宕机情况,严重时一天有两次异常宕机,排查了tomcat所有的日志文件,均未发现有异常的kill ,stop等,一开始是真的一头雾水,后来通过查阅系统上的messages,突然发现有这么一行信息
Apr 8 10:37:56 localhost abrtd: Directory ‘ccpp-2021-04-08-10:37:56-28497’ creation detected
Apr 8 10:37:56 localhost abrt[28498]: Saved core dump of pid 28497 (/dev/shm/a2acc035fd6bf073fba2bfafc64699f7) to /var/spool/abrt/ccpp-2021-04-08-10:37:56-28497 (106496 bytes)
Apr 8 10:37:56 localhost abrtd: Executable ‘/dev/shm/a2acc035fd6bf073fba2bfafc64699f7’ doesn’t belong to any package and ProcessUnpackaged is set to ‘no’
Apr 8 10:37:56 localhost abrtd: ‘post-create’ on ‘/var/spool/abrt/ccpp-2021-04-08-10:37:56-28497’ exited with 1
Apr 8 10:37:56 localhost abrtd: Deleting problem directory ‘/var/spool/abrt/ccpp-2021-04-08-10:37:56-28497’
通过这个日志发现,有个28497进程在这个时候退出了,而且该日志的时间点正是tomcat进程突然停止的时间。
这里原因就很清楚了,abrt进程无法写入ccpp导致进程异常退出。
abrt的配置文件中显示了# Max size for crash storage [MiB] or 0 for unlimited
#MaxCrashReportsSize = 1000
MaxCrashReportsSize 可以继续加大也可以设置为0,0为无限
另外,另一个abrt-action-save-package-data.conf配置中需要把ProcessUnpackaged设置为yes,而我未设置配置显示的为no。
因为系统上只运行了一个系统和一些中间件,而且是生成系统(没有集群),出于综合考虑后,所以我直接关闭了abrt服务进程,没有验证MaxCrashReportsSize 和ProcessUnpackaged这俩修改后是否解决此类问题。
另各配置文件和日志的路径:
messages:/var/log
abrt-action-save-package-data.conf:/etc/abrt
abrt.conf:/etc/abrt
如果您有更好的解决方案,或者这个解决方案有问题,请您提出您的见解!