调用接口pending的解决方案

在项目试运行中遇到接口调用pending问题,通过定位问题、分析SQL语句及优化代码,解决了因复杂查询导致的服务器阻塞。分享了设置SQL查询超时、前端路由优化及代码重构等解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用接口pending的解决方案

这个问题是在项目试运行一周左右出现的,最初是以为服务器承受不了压力崩溃了。后来发现调用某个查询接口之后pending,再之后调用任何一个接口全部都pending阻塞了。

定位问题

定位这个API接口后,我在代码里加入了打印接口每一步调用时间,云上打印出日志。惊讶的发现这个接口调用之后,有一个开始时间,但是再也没能打印出结束时间。同时我还看了下Linux服务器CPU使用率,当时没截图,印象里大概CPU直接飙慢了。
在这里插入图片描述

原因

既然定位了这个API查询接口有问题,那就简单多了。explain下SQL语句,果然写这个语句的同伴在里面浑水摸鱼,没好好构造,复杂度太高了,接口直接扎进去出不来了。
在这里插入图片描述

解决方案

1.当时项目正在试运行,最简单的方案就是直接数据库配置下my.cnf,设置sql语句最大查询时间,超过了就给他报错。
2.后期就给所有的前端代码里,路由切换时取消pending,不要因为一个接口拖累所有的。
3.最重要的还是写代码是就优化好速度,或者增加些筛选条件。

结语

当时所有接口都是测试过的,不过测试库没有没有那么多测试记录去测试性能,而且确实设计数据库是搞了太多联表查询,这也怪我们这个学生项目组太年轻了。代码复杂度高,运行效率低也是外行人写代码的通病。所以写代码一定要注意复杂度,多多优化代码的执行速度和效率。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值