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

这篇具有很好参考价值的文章主要介绍了定位前端POST请求报500的问题(从接口到nginx到服务器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.问题背景

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

二.定位问题的过程

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

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

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

写了个单元测试,模拟用户信息,然后用相同的数据去请求相关的方法,没有问题,排除接口逻辑问题。
前端post请求报500错误,nginx,前端,java,java,nginx,前端

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(虽然不是很合理,但是并不是这项配置的问题)。

前端post请求报500错误,nginx,前端,java,java,nginx,前端

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

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

前端post请求报500错误,nginx,前端,java,java,nginx,前端

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

前端post请求报500错误,nginx,前端,java,java,nginx,前端

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

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

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

三.总结

最后真正找到的原因感觉中间做了好多无用功,但是很多异常的情况需要一步步的落实,解决问题并不耗时,耗时的是如何定位问题。文章来源地址https://www.toymoban.com/news/detail-844754.html

到了这里,关于定位前端POST请求报500的问题(从接口到nginx到服务器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Axios post请求出现500错误

    Axios post请求出现500错误

    笔者在编写前端form表单传后端数据的时候,出现了以下问题 当我用axios发送post请求的时候,出现了500错误 笔者找了很长时间错误,代码没问题,后端接口也没问题, 后来发现问题出在实体类上了 当前端post请求调后端接口时候,后端控制台打印如下错误 看到错误提示说无法

    2024年02月07日
    浏览(8)
  • RestTemplate发起POST请求 突然返回错误码500,但相同的请求再postman中是可以调用

    RestTemplate发起POST请求 突然返回错误码500,但相同的请求再postman中是可以调用

    一个之前一直跑的很正常的springboot项目,RestTemplate发起POST请求 突然一直返回错误码500,但相同的请求再postman中是可以调用的。 删除RestTemplateConfig中的 factory.setBufferRequestBody(false); 即可正常调用。 注意 :网上说bufferRequestBody 是标志是否使用缓存流的形式,默认是 true,缺点

    2024年02月12日
    浏览(7)
  • 【python】request.post报错显示服务器内部错误500

    今天遇到一个问简单的问题,我通过pycharm发送post请求的时候,总是报500错误,提示服务器内部错误。但是我用postman尝试请求的时候,是能够返回的。 网上找了一下,发现是参数的配置的问题。 原始的代码: 参考如下博主的解决方式: 点我 更改之后的代码: 问题得到解决

    2024年02月12日
    浏览(8)
  • 用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)

    用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)

    记录使用Nginx将 纯前端 的Vue3项目部署到阿里云服务器(Ubuntu 22.04)上,包含通过Nginx代理实现 跨域请求 、以及个人踩坑记录~ 执行下列命令安装: 安装完成后查看nignx版本,显示版本信息则说明安装成果 启动nginx,如正确启动,则不会出现任何提示信息。 nginx启动成功后打

    2024年04月12日
    浏览(10)
  • 前端请求队列,解决多个请求同时请求一个接口导致阻塞的问题

    前端请求队列,解决多个请求同时请求一个接口导致阻塞的问题

    最近开发的数据大屏项目,使用echarts图表,通过拖拽的方式完成大屏的布局。 每一个图表编写一个vue文件,例如柱状图(barChart.vue): queryEchartsData的方法体如下: 折线图等其他图表同理,都是使用queryEchartsData来获取后端接口返回的数据,queryEchartsData写在queryData.js中,然后

    2024年01月20日
    浏览(12)
  • 前端api接口请求错误问题解决方法

    前端api接口请求错误问题解决方法

    最近我在群里看到很多同学在跟着视频写项目的时候,经常遇到一些关于资源请求API接口出现错误的问题,并在群里咨询。在这里,我想给大家分享一些解决这个问题的思路。 首先,我们需要对错误进行排查。这需要大家对HTTP请求有一定的了解。我在这里简单介绍一下,如

    2024年01月22日
    浏览(10)
  • 本地开发环境请求服务器接口跨域的问题(vue的问题)

    本地开发环境请求服务器接口跨域的问题(vue的问题)

    上面的这个报错大家都不会陌生,报错是说没有访问权限(跨域问题)。本地开发项目请求服务器接口的时候,因为客户端的同源策略,导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况: 可以看到,此时我们点击获取数据,浏览器提示我们跨域了。所以我

    2024年01月23日
    浏览(11)
  • Nginx转发post请求变get请求

    Nginx转发post请求变get请求

    最近用nginx转发请求,但是明明是post请求,打到服务上确实get请求,body中的参数都没了,于是去查背后详细的原因。 Nginx配置 ip及端口:192.20.81.34:8081 conf关键配置: 请求连接 1.http请求被转发至https请求引起重定向,导致post变get,显然这个和我的情况无关 2.location后连接多

    2023年04月08日
    浏览(14)
  • 若依接口500异常,前端分离

    1.更改vue.config.js中 target的网址为` https://vue.ruoyi.vip `, [ process .env.VUE_APP_BASE_API]: { target: ` https://vue.ruoyi.vip `,} 2. pathRewrite单引号后加入 /prod-api pathRewrite: { [\\\'^\\\' + process .env.VUE_APP_BASE_API]: \\\'/prod-api\\\' 3.在.env.development中变更 VUE_APP_BASE_API = \\\'/prod-api\\\' 用了若依线上的网址,500错误,不能加

    2024年02月05日
    浏览(13)
  • WEB通讯技术。前端实现SSE长连接,nodejs+express搭建简单服务器,进行接口调试,通过curl请求数据

    WEB通讯技术。前端实现SSE长连接,nodejs+express搭建简单服务器,进行接口调试,通过curl请求数据

    长连接(Keep-Alive)是一种HTTP/1.1的持久连接技术,它允许客户端和服务器在一次TCP连接上进行多个HTTP请求和响应,而不必为每个请求/响应建立和断开一个新的连接。长连接有助于减少服务器的负载和提高性能。 长连接的HTTP请求方法与普通HTTP请求方法相同,可以使用GET、P

    2024年02月09日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包