首页 > 其他分享 >接口超时问题汇总

接口超时问题汇总

时间:2024-12-09 19:00:18浏览次数:7  
标签:汇总 接口 API sql 超时 数据 死循环

接口超时问题汇总

1.网络异常
1.1 网络抖动 网络丢包可能会导致接口超时。
2.1 带宽被占满
服务器带宽指的是在一定时间内传输数据的大小,比如:1秒传输了10M的数据。
所以对于有些高并发请求场景,需要评估一下是否需要增加服务器带宽。

2.线程池满了
在java8之前可以通过实现Callable接口,获取线程返回结果。
java8以后通过CompleteFuture类实现该功能。我们这里以CompleteFuture为例:
如果是因为核心线程池设置太小,可以将其调大一些。
如果是因为多种业务场景共用了同一个线程池,可以拆分成多个线程池。

3.数据库死锁
你提供的API接口中通过某个id更新某条数据,此时,正好线上在手动执行一个批量更新数据的sql语句。
该sql语句在一个事务当中,并且刚好也在更新那条数据,可能会出现死锁的情况。
所以建议在执行数据库批量操作前,一定要评估数据的影响范围,不要一次性更新太多的数据,不然可能会导致很多意想不到的问题。
此外,批量更新操作建议在用户访问少的时段执行,比如:凌晨。

4.传入参数太多
因为数据库在执行sql语句之前,会评估一下耗时情况,查询条件太多,有可能走全表扫描更快。
所以这种情况下sql语句可能会丢失索引,让执行时间变慢,出现接口超时问题。
因此我们在设计批量接口的时候,建议要限制传入的集合的大小,比如:500。
该限制一定要写到接口文档中,避免接口调用方,在生产环境调用接口失败而踩坑。要在接口开发阶段通知到位。
如果我们重新进行系统设计改动比较大的话,有个临时的解决方案:在接口调用方中多线程分批调用该接口,最后将结果进行汇总。

5.超时时间设置过短
通常情况下,建议我们在调用远程API接口时,要设置连接超时时间和读超时时间这两个参数,并且可以动态配置。
并发量不大的业务场景,可以将这两个超时时间设置稍微长一点,比如:连接超时时间为10秒,读超时时间为20秒。
并发量大的业务场景,可以设置成秒级或者毫秒级。
因此,不建议多种业务场景共用同一个超时时间,最好根据并发量的不同,单独设置不同的超时时间。

6.一次性返回数据太多
查看日志发现,该API接口一次性返回的数据太多,而且该数据的更新时间相同。
这就可以断定,该API接口提供方进行了批量更新操作,修改了大量的数据,导致该问题的发生。
所以第三方这种根据日期查询增量数据的接口,建议做成分页查询的,不然后面没准哪一天,遇到批量更新的操作,就可能出现接口超时的问题。

7. 死循环
死循环其实有两种:
普通死循环
无限递归
7.1 普通死循环
还有一种隐藏的比较深的死循环,是由于代码写的不太严谨导致的。如果用正常数据,可能测不出问题,但一旦出现异常数据,就会立即出现死循环。
7.2 无限递归
建议写递归方法时,设定一个递归的深度,比如:分类最大等级有4级,则深度可以设置为4。然后在递归方法中做判断,如果深度大于4时,则自动返回,这样就能避免无限递归的情况。

8.sql语句没走索引
mysql在执行某条sql语句之前,会通过抽样统计来估算扫描行数,根据影响行数、区分度、基数、数据页等信息,最后综合评估走哪个索引。
必要时可以使用force index来强制查询sql走某个索引。

9.服务OOM
link: ElasticSearch服务Java内存异常分析和排查解决OOM
https://www.cnblogs.com/oktokeep/p/18205278

10.在debug
由于你在idea的debug模式中,一直都没有提交事务,会导致死锁的时间变得很长,从而导致业务页面请求的API接口出现超时问题。

 

标签:汇总,接口,API,sql,超时,数据,死循环
From: https://www.cnblogs.com/oktokeep/p/18595830

相关文章

  • 接口性能提升方法
    接口性能提升方法1.索引1.1没加索引sql语句中where条件的关键字段,或者orderby后面的排序字段,忘了加索引,这个问题在项目中很常见。项目刚开始的时候,由于表中的数据量小,加不加索引sql查询性能差别不大。目前在mysql中如果想要修改索引,只能先删除索引,再重新添加新的。1.2索引没......
  • 程序接口幂等性设计
    程序接口幂等性设计接口幂等性是指用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。这类问题多发于接口的:insert操作,这种情况下多次请求,可能会产生重复数据。update操作,如果只是单纯的更新数据,比如:updateusersetstatus=1whereid=......
  • 接口超时日志排查分析-BeanUtils对象复制6秒及类型不一致复制异常,复制null属性被覆盖
    接口超时日志排查分析-BeanUtils对象复制6秒及类型不一致复制异常,复制null属性被覆盖解决,常见Bean拷贝框架的性能对比1.接口超时日志排查分析-BeanUtils对象复制6秒1.查询日志命令,分析接口的请求及响应的时长catproJectDock.log|grep-E"请求开始时间|请求正常消耗时间">>......
  • XCVM1302-3HSEVFVB1369通过业界领先的 DDR 内存接口实现高数据吞吐量 - AMD Versal Pr
    XCVM1302-2MLIVSVF1369XCVM1302-2MSEVSVF1369XCVM1302-2MSIVFVB1369XCVM1302-2MSIVSVF1369XCVM1302-3HSEVFVB1369明佳达Versal自适应SoC兼具可编程逻辑和加速引擎的灵活处理能力,以及先进的内存和接口技术,可为各类应用实现定制化、强大的异构加速。VersalPrime系列是基......
  • 《 bilibili-起步级 接口文档设计 经验分享 ~ 》# 用户模块
    bilibili-用户模块接口设计-经验分享~#用户模块数据库er关系图:迅速跳转链接枚举码实体类:迅速跳转链接使用apifox.json格式导入接口文档步骤登录Apifox。新建文件,将代码粘贴到该文件,并更改后缀为.apifox.json进入项目,点击“导入”。选择“Apifox”格式......
  • 中软高科CSYJM-6U身份证云解码读卡模组分体式USB接口
    一、产品外观及说明        身份证云解码读卡模组CSYJM-6U,是新一代高度集成化的读卡模组,在上一代基础上进行了优化与改进,外观简洁,性能稳定。采用USBHID 标准接口,搭配读卡SDK,可快速集成使用。二、产品规格书2.1技术参数通讯接口:全速USB2.0,HID协议接口,1.25-4......
  • 认识接口
    一、常用名词同步和异步:同步是指实时处理数据,比如商品订单支付后,商品库存系统实时返回库存结果;异步是指不能实时处理数据,等处理完后再返回结果。比如商品订单支付后,商品物流信息不能实时同步。同步方式:增量和全量,增量是指的将增加变动的数据推送到其它系统;全量是定时推送,比如每......
  • 软件测试|电商类项目业务测试点汇总
    前言在数字化浪潮的推动下,电商项目已成为商业领域的重要支柱。从用户下单、支付到物流配送,每一个环节都关乎着用户的满意度和企业的生死存亡。在这样的背景下,电商项目的业务测试显得尤为重要。下面给大家介绍一下电商项目业务相关的测试点。01登陆功能测试功能测试:①输入......
  • EHOME视频平台EasyCVR私有化视频平台:安防监控网络摄像机根据接口类型可以分为哪几类?
    在现代监控系统中,摄像机作为捕捉视频信息的核心设备,其输出接口的多样性对于视频信号的传输和应用至关重要。随着技术的发展,摄像机的输出接口已经从单一的模拟信号发展到了多种数字接口,以适应不同的监控环境和需求。本文将为您详细介绍各种摄像机输出接口的类型及其应用场景,帮助您......
  • 使用Python开发获取商品销量详情API接口?(一篇文章全学会)
    在现代软件开发中,API(应用程序编程接口)已成为不同软件间交互的桥梁。尤其在电商领域,API接口使得开发者能够访问和操作电商平台上的数据,如商品详情、用户评价、订单信息等。本文将详细介绍如何使用Python开发一个获取商品销量详情的API接口。一、API接口概述API(ApplicationPro......