文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

定位前端POST请求报500的问题(从接口到nginx到服务器)

2023-10-21 05:41

关注

一.问题背景

背景是很早之前的项目,前端突然反馈某个POST接口保存特定的内容会报500,没有返回内容,记录一下定位问题的过程。

二.定位问题的过程

1.结合请求数据来看长度大概为15000+,首先想到是数据库字段长度问题。

查询后发现比较长的字段定义的是text类型, 最大长度为65,535(2的16次方–1)字符,排除这种猜想。

2.怀疑是后端接口逻辑的问题。(运行了几年都没问题,大概率不是)

写了个单元测试,模拟用户信息,然后用相同的数据去请求相关的方法,没有问题,排除接口逻辑问题。
在这里插入图片描述

3.怀疑是框架是否对post接口请求数据量做了限制。(因为这个接口正常业务应该只会接受10k以下的数据)

用的pigx框架,排查了请求链路涉及的所有服务,未发现有maxPostSize、max-http-post-size的相关配置,排除框架限制问题。

4.回到数据量问题上。

使用postman模拟请求,将入参特定字段分别以“aaaaaa”的形式定长8000和12000进行请求,发现8000数据可以请求正常,12000不行,那么就确定了是post数据量问题。

5.后端已经排查过了,是否是nginx限制post请求问题。

Tomcat 默认Post请求的数据大小是 2M , Nginx默认Post请求的数据大小是 1M , 超过这个数据量的请求会被直接拒绝,但是目前的界限在10k,我查询了nginx.conf中client_max_body_size,client_body_buffer_size的大小,发现限制大小的参数为2000M(虽然不是很合理,但是并不是这项配置的问题)。

在这里插入图片描述

6.基本能确定是nginx的问题,但是不知道问题出在哪里。

查询nginx的assess.log和error.log,看看报错信息相关的日志。

在这里插入图片描述

发现nginx日志信息打印了22G,我的天,突然好像理顺了问题的原因,连忙看了下服务器的内存:

在这里插入图片描述

7.最终原因:磁盘满了!!!!

nginx在转发数据超过10k以上需要借助磁盘空间,刚好今天上午磁盘才满,所以查ngnix报错日志只截止到今天上午,也查不出来相关的报错信息。当然,问题找到了就好解决:

把nginx的assess.log和error.log都删了,然后重启nginx,磁盘空间释放,重新测试相关接口返回正常,搞定!

三.总结

最后真正找到的原因感觉中间做了好多无用功,但是很多异常的情况需要一步步的落实,解决问题并不耗时,耗时的是如何定位问题。

来源地址:https://blog.csdn.net/xinleiweikai/article/details/131709598

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯