今天生产环境碰到了个磁盘空间写满的问题,nginx报错磁盘空间占用已满。
最终看到是因为后端处理mq消息的时候发生错误
这个错误是因为oracle底层无法处理null值导致
原因的产生是因为程序接收到mq的消息后,想要处理,但是由于oracle底层无法正确处理并存储,所以导致报错写入日志,消息又回到队列导致死循环,让服务器日志暴增。
解决办法是在mq配置中加入对于无法处理的消息的处理机制
rabbitmq:
# 开发
host:
port: 5672
username:
password:
listener:
simple:
retry:
enabled: true # 启用重试机制
max-attempts: 5 # 最多重试3次
initial-interval: 5000 # 首次重试间隔5秒
multiplier: 1.0 # 重试间隔倍数
max-interval: 15000 # 最大间隔15秒