/var 分区只剩零字节,Nginx 写不进 access.log,请求直接返回 500。蜘蛛一天内把站点标成不可用,抓取量掉到零。
一开始怀疑是「备份文件也写进了同一个分区」,查了一圈,方向不对。
排查方向其实有限,先把可能性排一排。日志没做轮转,单个文件涨到四十个 G。也可能是错误日志里同一条报错刷屏,一天就是几百兆。
少数情况下是磁盘监控只在九成时告警,没有自动清理动作。
动手时先看分区与 inode 使用
df -h /var; df -i /var
然后找出最大的日志文件
du -sh /var/log/* | sort -hr | head
接着配 logrotate 按天切分并保留七天
daily rotate 7 compress missingok
等前面都确认过,再清掉已切分的旧归档
find /var/log -name '*.gz' -mtime +7 -delete
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
恢复的判定其实很直接。分区占用回到六成以下,Nginx 恢复写日志,500 消失,抓取量两天内恢复到原有水平。
提醒一点。磁盘满最先坏的不是页面而是日志,等发现时现场已经被冲掉,监控要盯绝对剩余量。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
