← 中文资源

简体中文版本

nginx 报 499 表示客户端主动关闭请求

通过把客户端超时与慢速上游响应关联并相应调优超时,解读 nginx 的 499 状态。

阅读英文原文

症状

nginx 访问日志出现大量 499,而客户端报告超时。499 表示 nginx 因客户端关闭而关闭连接,发生在客户端在上游应答前停止等待时。它本身不是后端故障,但指向相对于客户端超时与代理设置而言过慢的响应。

诊断

把 499 与请求耗时关联;对比客户端与上游超时;直接测量慢端点耗时。

awk '{print $9, $NF}' access.log | grep 499 | head

根因

nginx 记录 499,因为客户端在 nginx 收到上游响应前关闭了连接,通常由于客户端超时短于后端响应时间。

修复

降低后端响应时间;对齐客户端与代理超时,使代理等待不超过客户端愿意等待的时间;对天然较慢的端点用后台处理或缓存使响应落在客户端预算内。仅调超时不降延迟只是移动边界。

验证

重跑代表性流量确认 499 下降,并确认慢端点可在客户端超时内返回。客户端中断减少且响应及时即证明修复。

常见陷阱

把代理超时设得远大于客户端超时会让慢请求堆积并浪费后端资源;应两端对齐。