INCOMPLETE_CHUNKED_ENCODING

问题背景

乞丐版阿里云 服务器上, 搭建了某个私有服务, 部署完成之后, 访问服务, 发现部分静态资源加载报错 net ::ERR_INCOMPLETE_CHUNKED_ENCODING(不完整的分块编码)

问题分析

从报错信息上来看, 错误原因很明显, 就是响应的 数据不完整(被截断) , 但是在本地电脑上部署并复现该问题时, 并没有重复出现, 这就很蛋疼. 但是已多年使用乞丐服务器的经验来判断, 最可能的原因有两个:

  • 服务器配置太低, 某些服务无法正常运行
  • 私有服务器, 配置管理并没有多么标准化, 导致的某些资源权限不对劲.

查看nginx的error日志, 发现如下报错:

1
2
3
4
5
2021/05/04 12:56:43 [crit] 2694762#0: *528 open() "/var/lib/nginx/tmp/proxy/8/03/0000000038"

failed (13: Permission denied) while reading upstream, client: 116.3.154.5, server: xxxxxxx, request: "GET /js/index.js?v=0c014ed3f83cba3010ffa07c87a71067 HTTP/1.1"

upstream: "http://127.0.0.1:3000/js/index.js?v=0c014ed3f83cba3010ffa07c87a71067", host: "xxxxxx"

作为常年写BUG, 人员, 看到 Permission denied , 这个错误信息, 马上就知道, 是权限问题没跑了.

但是又一个问题不可解释 : 所有的静态资源是在同一个目录下, 理论是来讲,如果是权限有问题, 那应该是全部都访问失败才对, 为什么部分访问成功?

在看下报错信息 : /var/lib/nginx/xxx , 这又是啥目录? 看起来是nginx相关的目录,但是又是怎么产生, 做什么用的呢?

首先权限问题 : /var/lib/nginx/ 当时是 root 权限, 而 我的 worker 进程是 www 运行的 , chown -R www:www /var/lib/nginx/ 后, 问题解决.

其次是nginx访问目录的问题 : Nginx 的响应太大,它会使用此 /var/lib/nginx/tmp 作为临时文件的工作目录。如果工作进程无法访问它,Nginx 将在其完成之前 终止传输 , 从而导致错误 INCOMPLETE_CHUNKED_ENCODING

衍生分析

假如目录权限正确, 那是否还有其他场景可能导致相同的报错呢?答案是肯定的.既然依赖磁盘存储, 磁盘存储空间不足, 一定也会报错, 从nginx的报错日志中应该能看到类似 28: No space left on device 的报错.

总结

请求资源报错 Net::ERR_INCOMPLETE_CHUNKED_ENCODING 的可能他原因 :

  • 相关的目录 访问权限不正确
  • 服务器 磁盘空间不足

感谢阅读!


INCOMPLETE_CHUNKED_ENCODING
http://www.zhangdeman.cn/archives/4544cb31.html
作者
白茶清欢
发布于
2021年5月4日
许可协议