上线限流后磁盘三天从 40% 涨到 92%,du 看到 app.log 有 68G,其中 1.2 亿行是 WARN blocked by flow rule,每秒 1400 条。日志采集端也跟着堆积。乍看像缓存或者权限的锅,追下去往往不是。
grep -c 'blocked by flow' /var/log/app/app.log # 1.2 亿行 du -sh /var/log/app/app.log
追下去是这么回事:拒绝路径上每个请求打一条 warn,没有任何采样或聚合。限流本身是高频事件,量级和正常请求一样,磁盘按这个速度撑不住。
「限流日志淹没磁盘」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
具体做法是,拒绝日志改成按秒聚合 只记条数和规则 id;单条明细降到 debug 或者采样 1%;给日志目录单独设配额和轮转 超限告警。
验收就看一点,改完后同样的流量下日志每天不到 500 行,磁盘占用稳定在 45% 以下。
