资讯专栏INFORMATION COLUMN

413错误——线上bug历险记

李世赞 / 1415人阅读

摘要:查了一下,报错误,表示请求实体太大。此错误通常出现在使用请求进行文件上传的时候,因为上传文件容易出现大文件,比如超过的。所以,结果很明显了,问题基本出现在前端请求服务转发跳板机三个位置。修改为以后,问题解决。

今天阳光明媚,天气正好,心情很是美丽。

但是业务同学突然说生产环境出bug了。

对不起,收回前言,感觉是台风过境。。

查了一下,报413错误,表示http请求实体太大。

此错误通常出现在使用http请求进行文件上传的时候,因为上传文件容易出现大文件,比如超过5m的。

但是今天导致这个问题的是因为前端post请求发送的json对象太“大”了,108k左右,排查了一下,感觉很奇怪,报文体小一点,90多k,没问题,100多k就有问题,100k左右应该就是出现问题的分界线。

看了一下没有日志产生,基本可以确定不是后台代码的问题。

分析了一下http请求经过的路径节点:

**前端请求**——>**node服务转发**——>**跳板机**——>**Nginx转发**——>**后台Tomcat服务**——>**后台代码**

第一反应是会不会是因为Nginx的配置导致的,记得之前有一次上传文件也报413,就是因为文件大小是8M,超出了Nginx配置的上限导致的。

于是第一时间联系了ops,他们查看结果是:
client_max_body_size 5M;(请求体缓存区大小)
client_body_buffer_size 128k;(客户端请求体缓冲区大小)

所以没有问题,为了保险起见,client_max_body_size修改为20M,但是问题还存在,所以并不是Nginx配置的问题。

这是我的注意力赚到了Tomcat,Tomcat的server.xml中,maxPostSize参数会限制post请求报文体的最大值,继续麻烦ops,发现server.xml中并没有配置这个参数,查了一下,没有配置的时候,默认值是2M(2097152 (2 megabytes).),也没有问题。。。

emmmmmm。。。。

因为前后端分离,不太清楚前端的实现会不会限制post报文体大小,虽然我很自信后端代码不会有问题,但还是先用postman测试了后端,发现即使是1M的数据,也没得问题。

所以,结果很明显了,问题基本出现在前端请求、node服务转发、跳板机三个位置。

找了前端同学了解了一下,原来他们node服务使用Egg.js框架,而Egg的配置jsonLimit,会限制json报文体的大小,如果没有配置的话,默认为100k。

修改为5M以后,问题解决。

完美。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75773.html

相关文章

  • java 基础 - 收藏集 - 掘金

    摘要:基础知识复习后端掘金的作用表示静态修饰符,使用修饰的变量,在中分配内存后一直存在,直到程序退出才释放空间。将对象编码为字节流称之为序列化,反之将字节流重建成对象称之为反序列化。 Java 学习过程|完整思维导图 - 后端 - 掘金JVM 1. 内存模型( 内存分为几部分? 堆溢出、栈溢出原因及实例?线上如何排查?) 2. 类加载机制 3. 垃圾回收 Java基础 什么是接口?什么是抽象...

    makeFoxPlay 评论0 收藏0
  • python 险记——一个 Java 程序员的告白(一)

    摘要:元组也支持内置函数的参数必须是一个序列字符串列表元组元组有什么用既然中有这么个数据结构,自然就有它的用武之地。 引言 想学爬虫还是 python 专业啊,之前一直在用 java, 现在决定尝尝鲜,使用 python及爬虫框架来完成网络数据采集。编程语言之间都是相通的,比如都需要模块化,引入其他文件来实现功能,使用列表等容器来处理数据,都要使用 json 或 xml 来解析和传输数据。你...

    leejan97 评论0 收藏0
  • python 险记——一个 Java 程序员的告白(一)

    摘要:元组也支持内置函数的参数必须是一个序列字符串列表元组元组有什么用既然中有这么个数据结构,自然就有它的用武之地。 引言 想学爬虫还是 python 专业啊,之前一直在用 java, 现在决定尝尝鲜,使用 python及爬虫框架来完成网络数据采集。编程语言之间都是相通的,比如都需要模块化,引入其他文件来实现功能,使用列表等容器来处理数据,都要使用 json 或 xml 来解析和传输数据。你...

    newtrek 评论0 收藏0
  • 一步一步搭建前端监控系统:如何定位前端线上问题?

    摘要:一直以来,前端的线上问题很难定位,因为它发生于用户的一系列操作之后。当然,这些问题并非不能克服,让我们来一起看看如何去定位线上的问题吧。地址参考一步一步搭建前端监控系统错误监控篇一步一步搭建前端监控系统接口请求异常监控篇 摘要: 记录用户行为,排查线上BUG。 作者:一步一个脚印一个坑 原文:如何定位前端线上问题(如何排查前端生产问题) Fundebug经授权转载,版权归原作者所...

    aaron 评论0 收藏0

发表评论

0条评论

李世赞

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<