INCOMPLETE_CHUNKED_ENCODING
问题背景
在 乞丐版阿里云
服务器上, 搭建了某个私有服务, 部署完成之后, 访问服务, 发现部分静态资源加载报错 net ::ERR_INCOMPLETE_CHUNKED_ENCODING(不完整的分块编码)
问题分析
从报错信息上来看, 错误原因很明显, 就是响应的 数据不完整(被截断)
, 但是在本地电脑上部署并复现该问题时, 并没有重复出现, 这就很蛋疼. 但是已多年使用乞丐服务器的经验来判断, 最可能的原因有两个:
- 服务器配置太低, 某些服务无法正常运行
- 私有服务器, 配置管理并没有多么标准化, 导致的某些资源权限不对劲.
查看nginx的error日志, 发现如下报错:
1 |
|
作为常年写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 的可能他原因 :
- 相关的目录
访问权限不正确
- 服务器
磁盘空间不足
感谢阅读!