事故以及原因排查

上午运维的同事告诉我某个系统登录不进了。赶紧测试了一下,然后就连接到服务器排查具体原因。
jps 一看 服务全部都挂了,根本没有在运行的。
赶紧看日志 ,发现有一个服务 logback 归档了大量的错误日志。一个100M 一天300个 周末这两天 到周一早上刚好把硬盘空间撑满了。
记一次日志框架使用不当的事故_日志文件
df -h 查看有一个挂载点确实满了
然后 使用 du -h --max-depth = 1 查看具体目录,可以看到有一个目录155G
记一次日志框架使用不当的事故_字段_02
大概知道了 肯定是大量的异常日志引起的磁盘空间不足,导致虚拟机运行异常,进而所有的服务全部中止。
然后,删除一部分的日志,将其他服务重启,发现没有问题,就暂时给运维答复了。

问题解决

原因分析

之所以打印大量的异常日志,是因为一个jar用于订阅kafka集群的数据 并持久化到本地数据库,偶尔会有一点异常,问题不大,不过是一些SQL字段的编码问题。但是这次订阅过来的数据 ,转换成SQL语句时,发现在本地表结构中缺少一些相应字段,也就是数据提供方又又又加字段了。导致所有的SQL 全部执行异常,再加上数据还会重试。这就导致归档了大量的异常日志。

解决办法

这里使用的是logback 日志框架,在logback-spring.xml中添加,
记一次日志框架使用不当的事故_重启_03
指定最大值,那么当日志文件超过10GB时,就会覆盖原来的日志文件。
以下是测试 1MB 每个日志文件,总量 10MB,当超过10MB就会从1开始覆盖。
记一次日志框架使用不当的事故_日志文件_04
接着就是给本地的表结构新增缺失字段,重启服务了。

有疑问,可以留言。