生产环境 net :: ERR_INCOMPLETE_CHUNKED_ENCODING问题修复
net :: ERR_INCOMPLETE_CHUNKED_ENCODINGproxy_buffer_sizeproxy_buffersproxy_busy_buffers_sizeproxy_temp_file_write_size
·
生产环境 net :: ERR_INCOMPLETE_CHUNKED_ENCODING问题修复
题记
新系统上线一个月后,生产环境后台管理端时而出现查询失败的提示,清理
Chrome
缓存重新访问后正常,由于不影响业务,优先级不高就没有在发现的第一时间排查、修复,项目正常迭代后,决定去看下具体什么情况。
ERR_INCOMPLETE_CHUNKED_ENCODING
还是熟悉的味道,还是原来的配方,
F12
查看请求,首先分析报错信息如上所示,排查发现后台应用系统并没有日志打印,经分析确认是nginx
代理问题导致的。部分微服务个应用节点通过nginx
端口访问,能够正常请求接口并获取对应的响应。但是部分请求通过nginx
转发,出现请求正常(响应200
),一直提示上述错误NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
。
nginx
的缓冲区
case1
客户端到
nginx
速度快,nginx
到服务器速度慢,没有缓冲区,一点数据量就直接发到客户端,浪费性能。
有缓冲区,数据积累到一定量,再传输到客户端,减少了tcp
请求的频次。
case2
客户端到
nginx
速度慢,nginx
到服务器速度快,没有缓冲区,
nginx
到服务器的连接就会一直保持在客户端,等待接受完毕。
有缓冲区,返回内容放到缓冲区,nginx
到服务器的连接就可以断开,客户端从缓冲区获取即可。
具体分析
- 磁盘空间不足;
nginx
配置缓冲区设置过小;nginx
的临时目录(/proxy_temp
)没有权限写入缓存文件;
方案分析
在nginx.conf
中的对应的反向代理配置
中调整缓冲区大小。
问题解决
生产nginx.conf
配置修改
location /frontProxy/ {
proxy_pass http://xx.xx.xx.xxx:8088/;
# 新增如下
proxy_buffer_size 1024k;
proxy_buffers 16 1024k;
proxy_busy_buffers_size 2048k;
proxy_temp_file_write_size 2048k;
}
proxy_temp
文件权限分析
目录权限
nginx.conf
文件分析
# user nginx; 权限调整
user root;
测试环境文件分析
user root
产生的proxy_temp
所属的用户权限也是root
;- 如上文所示
nginx
用户是没有权限写入临时文件的; - 调整
user root
->user nginx
;- 由于测试环境数据大小并未超限,所以未生成
proxy_temp
文件;
- 由于测试环境数据大小并未超限,所以未生成
生产环境产生 proxy_temp
- 部分请求失效,是缓冲区大小导致的,修改方案见上文;
更多推荐
已为社区贡献2条内容
所有评论(0)