博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌

技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。

感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。

一、背景描述

新系统上线一个月后,生产环境浏览端报网络错误,请稍后重试,由于是偶发提示,不是必现的,而且不影响业务系统正常使用,优先级不高,所以就没有在发现的第一时间排查、修复,项目正常迭代后,决定去看下具体什么情况。

二、问题复现

ERR_INCOMPLETE_CHUNKED_ENCODING,熟悉的味道,原来的配方,这个问题再次出现,F12查看请求,发现接口无任何返回,接口状态显示 (failed) net::ERR_INCOMPLETE_CHUNKED_ENCODING。如下图所示:

在这里插入图片描述

三、问题原因

出现上述问题的原因可能有以下几个,大家可以逐个排查:

  • 磁盘空间不足;
  • nginx配置缓冲区设置过小;
  • nginx的临时目录(/proxy_temp)没有权限写入缓存文件;

四、解决方案

关于解决方案,不同的原因有不同的解决方法,所以根据上述的原因有以下几种对应的方法:

4.1 解决方案一

此方案是针对上述问题原因中第一个原因的解决方法,对于磁盘空间被占满,有两种方法可以使用。
第一:可以清理磁盘文件,具体的可以把不使用的文件或者日志清除即可。
第二:新增磁盘空间,使磁盘空间变大。

4.2 解决方案二

此方案是针对上述问题原因中第二个原因的解决方法,在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;
}

4.3 解决方案三

此方案是针对上述问题原因中第三个原因的解决方法,proxy_temp文件权限分析

目录权限

  • nginx.conf文件分析
# user nginx; 权限调整
user root; 

测试环境文件分析

在这里插入图片描述

  • user root 产生的 proxy_temp所属的用户权限也是root

  • 如上文所示nginx用户是没有权限写入临时文件的;

  • 调整

    user nginx --> user root
    
    • 由于测试环境数据大小并未超限,所以未生成proxy_temp文件;

五、拓展:生产环境产生 proxy_temp

  • 部分请求失效,是缓冲区大小导致的,修改方案见上文;

好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐