linux邮件服务导致机器内存oom问题

故障现象

  • 内存在爬梯且没有下降的迹象

排查思路

  • 尝试使用阿里云主机监控查看高内存应用
  • 尝试查看系统日志是否有相关报错
  • 回忆这段时间干了什么东西

故障分析

  • ❌ 可能是某个应用内存泄漏(检查过top就只有mysql是top1并且mysql内存没有上升趋势)
  • ✔️ 通过系统日志检查发现,系统自带的邮件服务(postfix)好多warning。意识到好像是因为这段时间点击宝塔的垃圾清理导致开始内存飙升。

具体总结

crond在执行脚本时会将脚本输出信息以邮件的形式发送给系统用户,要调用sendmail,而sendmail又会调用postdrop发送邮件,但是系统的postfix服务没有正常运行,那么邮件就会发送不成功,postdrop老是执行失败,致使持续写入日志到日志文件。日志文件增大的速率超过了logrotate的删除频率,所以导致资源耗尽。

后续

重启邮件服务恢复正常

$ systemctl restart postfix.service

为了后续清理垃圾不再出现这种坑爹问题,需要将crontab执行结果发送到email的逻辑去掉(执行脚本有记录日志在其他地方)

清空maillog文件,停止所有的sendmail,postdrop进程,修改/etc/crontab中MAILTO=root 为MAILTO=" "设置成空,crond仍然会调用sendmail发送邮件,再把crond执行的命令最后加上 &> /dev/null 2>&1 ,crond不再sendmail 是需要重启下crond服务的

添加新评论

文章状态:已收录~