java 413错误,413错误——线上bug历险记
今天阳光明媚,天气正好,心情很是美丽。
但是业务同学突然说生产环境出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以后,问题解决。
完美。
java 413错误,413错误——线上bug历险记相关推荐
- 走完线上 BUG 定位最后一公里
简介:因为线上线下环境隔离的问题,线上的输入很多时候难以在日常环境中构造,定位 bug 效率低下.是否有简单快捷的办法呢? 一个小故事 周末12点的闹钟在回龙观均价3000的出租屋急促的响起,程序员小 ...
- 线上BUG 处理并分析原因
昨天下午大神把组内几十号人召集在一起开Online bug分析大会,主要是针对近期线上事故从事故原因和解决方案两个维度来分析 对金融软件来说,每一次的线上事故都有可能给公司带来重大的损失,少扣了用户的 ...
- 测试金融软件出现线上bug的原因及解决方法
小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...
- 听说”双11”是这么解决线上bug的
听说"双11"是这么解决线上bug的 --Android线上热修复的使用与原理 预备知识和开发环境 Android NDK编程 AndFix浅析 Android线上热修复的原理大同 ...
- java河南口腔医疗机构线上服务系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
java河南口腔医疗机构线上服务系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java河南口腔医疗机构线上服务系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源 ...
- Nacos2.0.3版本线上bug导致整个集群挂掉从而导致业务系统挂掉的解决办法
文章目录 @[toc] 一.问题 二.解决办法 三.项目升级demo及项目nacos配置 3.1 dubbo-demo-producer生产者端项目POM配置 3.2 dubbo-demo-consu ...
- 软件测试面试中关于线上bug,线上出现bug测试人员怎么办
常在河边走,哪能不湿鞋,即使测试在工作中已经小心再小心了,但有时还是可能会出现线上问题,真是个悲伤的故事,然而纵然悲伤也需要有个结局,那么项目上线出现bug,测试人员该肿么办呢? 首先要做的是重现这个 ...
- 线上Bug无法复现怎么办?老司机教你一招,SpringBoot远程调试不用愁!
前言 在部署线上项目时,相信大家都会遇到一个问题,线上的 Bug 但是在本地不会复现,多么无奈. 此时最常用的就是取到前端传递的数据用接口测试工具测试,比如 POSTMAN,复杂不,难受不? 今天陈某 ...
- 内存泄漏java例子_一次线上Java应用内存泄漏分析实例
由于JVM的内存管理采用GC垃圾自动回收机制,这使得Java程序员在编程的时候确实可以从内存管理中释放出来,但这也引发了另外一个大问题,一旦Java应用出现内存泄漏的时候,常常让人措手不及,陷入无从下 ...
最新文章
- Linux压缩和解压缩命令集
- 皮一皮:老外这是人傻钱多啊...
- Linux bind-utils
- SLAM: SLAM基本流程—VSLAM扫盲之旅
- ASP.Net学习笔记001--ASP.Net简介1
- AJAX培训第一讲:AJAX基础
- sir模型初始值_经典传染病的SIR模型(基于MATLAB)
- STM32F1开发指南笔记20----数码管驱动芯片TM1640解析
- Excel 表格打印篇(批量添加标题,同页打印,打印logo与页码)
- 使用Java+MapReduce实现热词发现
- 关于Shader KeyWord的整理
- 定时任务最简单的3种实现方法(超好用)
- SCCM 2012 R2部署,SCCM配置(五)
- Socket通信实例详解
- 倍福--通知方式实现ADS通信
- 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!
- 国内最全的通信运营商5G无线频率分布(含移动电信联通广电铁路)
- 小程序申请体验版生成二维码
- IP地址和子网掩码计算
- Windows10 Docker Desktop启动闪退