nginx报:upstream prematurely closed connection while reading upstream异常

异常描述

在一个愉快的周末即将结束的时候,客服告诉我系统出现异常了,查询返回数据失败。
前端看了一下,请求返回错误: ERR_CONTENT_LENGTH_MISMATCH
在这里插入图片描述
后台nginx查询日记,发现错误日记:

 13966#0: *725 upstream prematurely closed connection while reading upstream, c。。。。。。

于是在网上找了很多例子,网上找了不少案子,都是说ngxin缓存目录权限的问题。虽然我们认为不应该是这个原因,因为我们平台已经运行了很久,不可能是这方变的原因。但还是盲从的跟着网上操作了一遍,发现一点效果都没有,问题依然存在。
同时我们还发现,上传文件,如果文件超过10kb就会上传失败。

问题原因

经过分析,我们怀疑是磁盘的空间不够了,于是沿着请求一路追踪,最终发现其中一台作为中转的nginx服务器空间不足了,从而引起当请求内容过大,或者返回的结果超过一定级别是就会失败。在该应用的错误日记中进一步证实了我们的判断,由于空间不足,写入缓存超时,导致一系列的问题。

在这里插入图片描述系统空间使用情况如图,单个日记文件16G,系统磁盘占用100%
在这里插入图片描述

解决方案

临时解决方案: 将nginx的access.log 文件备份后删除,使用命令重启ngxin,经过验证,问题得到解决。
长期解决方案:对于平台需要有定期的运维计划,每个月,需要定期检查系统磁盘的使用情况,该扩充就扩充,该删除就删除。而不是应用上线后只要系统正常运行就不管理维护是不行的。

这个问题算是一个低级错误,望各位引以为戒。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐