当前位置:首页 > 实用技巧 >

数据请求超时怎么解决(请求响应慢导致超时怎么解决)

来源:原点资讯(m.360kss.com)时间:2023-11-24 22:31:08作者:YD166手机阅读>>

作者介绍

Wen,携程资深后端开发工程师,专注系统性能、稳定性、交易系统等领域。

一、背景

在现今的信息时代,微服务技术已成为一种重要的解决方案,微服务技术可以使系统的规模和功能变得更加灵活,从而获得更高的可扩展性和可用性。然而,微服务调用中出现的超时问题,却也成为系统可用性的一大隐患。超时会导致客户端的性能下降,甚至可能无法正常工作。本文针对超时问题,提出相关的优化手段,降低微服务调用超时的风险。

1.误区

当我们遇到超时或执行慢的问题时,我们往往会认为是依赖方出现了问题。

例如:访问 Redis、DB、 RPC 接口变慢、超时,第一时间找依赖方排查问题,对方反馈的结论是,我这边(服务端)没有问题,请检查一下你那边(客户端)是否有问题。

实际上,性能下降是一个非常复杂的问题,它可能涉及多个方面,包括服务端和客户端。例如:代码质量、硬件资源、网络状况等问题都会导致性能下降,从而引发响应慢、超时等问题。因此,我们需要全面地分析问题,找出影响性能的各种因素。

2.分享的目的

本文将详细介绍我们在生产环境中遇到的慢执行和超时等问题,并提出相关的优化手段,通过优化长尾性能,降低变慢或超时的风险,提升系统的稳定性。

二、超时的分类

常见的超时一般有两类:

  • 连接超时(ConnectTimeout):指建立网络连接所需要的时间超出了设定的等待时间。
  • Socket 超时(SocketTimeout):指在数据传输过程中,客户端等待服务端响应的时间超出了设定的等待时间。

如下图,①就是连接超时关注的时间,②就是 Socket 超时关注的时间,本文讲解的超时为 Socket 超时。

数据请求超时怎么解决,请求响应慢导致超时怎么解决(1)

图1 客户端请求过程

三、超时问题分析与优化

1.设置合理的超时时间

根据实际情况设置合理的超时时间,避免因为超时时间设置不合理导致的接口超时。

1)分析

看下客户端设置的超时时间是否合理。比如调用服务端 P99.9 是100ms ,客户端设置的超时时间是 100ms ,就会有 0.1% 的请求会超时。

2)优化方案

我们在设置超时时间需要综合考虑网络延迟、服务响应时间、GC 等情况。

以门票活动查询引擎为例:

  • 核心接口:最小值( P99.9*3 ,用户可接受的等待时间),核心会影响到订单,在用户可接受范围内尽可能出结果。
  • 非核心接口:最小值( P99.9*1.5,用户可接受的等待时间),非核心不影响订单,不展示也没关系。

2.限流

当系统遇到突发流量时,通过限流的方式,控制流量的访问速度,避免系统崩溃或超时。

1)分析

看下超时时间点的请求量是否有突增,比如有某些突然的活动,这个时候应用没有提前扩容,面对突增流量会导致应用负载比较高,从而导致超时问题。

2)优化方案

评估当前应用最大可承载的流量,配置限流,维度可以是单机 集群。

  • 单机限流:在面对突增流量时避免单机崩溃。
  • 集群限流:在有限的资源下提供最大化的服务能力,保证系统稳定性,不会出现崩溃或故障。

3.提升缓存命中率

提升缓存命中率,可以提高接口的响应速度,降低接口的响应时间,从而减少超时的发生。

1)分析

分析调用链路,找到慢的地方对其进行优化,提升服务端的响应速度。

如下图所示,很明显可以看到服务端执行时间超过了客户端配置的超时时间 200ms 导致超时。

数据请求超时怎么解决,请求响应慢导致超时怎么解决(2)

图2 客户端调用服务端超时链路

继续分析服务端执行链路,发现是因为缓存没有命中导致的。

数据请求超时怎么解决,请求响应慢导致超时怎么解决(3)

图3 缓存未命中链路

2)优化方案

对于高并发系统来说,常见的是使用缓存来提升性能。

如下图是之前的缓存架构,这种缓存架构有两个风险。

  • 缓存是固定过期的,会导致某个时间大量 key 失效直接击穿到数据库。
  • 主动刷新机制是删除缓存,监听数据库 binlog 消息删除缓存,如果大批量刷数据会导致大量 key 失效。

数据请求超时怎么解决,请求响应慢导致超时怎么解决(4)

栏目热文

数据获取失败怎么解决(获取数据失败是什么毛病)

数据获取失败怎么解决(获取数据失败是什么毛病)

随着科技的不断进步,电脑已经成为了人们日常生活中不可或缺的一部分。在电脑中,硬盘是最为重要的存储设备之一,它存储了我们的...

2023-11-24 22:27:48查看全文 >>

怎样修复数据请求异常(数据请求出错了怎么解决)

怎样修复数据请求异常(数据请求出错了怎么解决)

嗨,大家好,我是勾勾。上次分享的Excel技巧是不是很实用呢?我们在数据分析的路上,不光要熟练掌握各种数据分析工具,更要...

2023-11-24 21:50:41查看全文 >>

自己的车后桥加什么油(汽车后桥加齿轮油加多少合适)

自己的车后桥加什么油(汽车后桥加齿轮油加多少合适)

车辆后桥齿轮是双曲线齿轮,双曲线齿轮的工作条件苛刻,随着汽车的开开停停,经常处在高速冲击负荷,高速低扭矩,低速高扭矩状况...

2023-11-24 21:55:01查看全文 >>

一般车的后桥用什么油(车后桥用什么齿轮油最好)

一般车的后桥用什么油(车后桥用什么齿轮油最好)

汽车的保养维护,一般就是检查汽车的三滤二油,其中的一个油就是后桥油,那么什么是后桥油,后桥油需要多久更换一次呢?汽车后桥...

2023-11-24 21:49:02查看全文 >>

后桥加齿轮油是加满吗(后桥一般加多少齿轮油合适)

后桥加齿轮油是加满吗(后桥一般加多少齿轮油合适)

汽车首保大家经常见,房车的首保你见过吗?柴油车和汽油车保养有什么不同呢?我们一起来看一下吧!这些就是保养科目需要用到原材...

2023-11-24 22:03:01查看全文 >>

如何解决数据获取失败(为什么会显示数据获取失败)

如何解决数据获取失败(为什么会显示数据获取失败)

这是一个很常见的问题,一个简单的VLOOKUP公式,怎么看都没有问题,就是得不到正确的结果:=VLOOKUP(D2,A:...

2023-11-24 22:22:42查看全文 >>

数据获取失败怎么回事(数据加载失败是怎么办)

数据获取失败怎么回事(数据加载失败是怎么办)

小编今天将为大家分享一下关于C#高频数据采集的经验。在现代信息化时代,数据对于企业和个人来说都具有重要意义,而如何高效地...

2023-11-24 21:53:10查看全文 >>

请求名称有效但是找不到有效数据(错误信息没有找到指定的数据)

请求名称有效但是找不到有效数据(错误信息没有找到指定的数据)

HTTP是什么HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)是一个简单的请求-...

2023-11-24 22:22:40查看全文 >>

数据载入失败怎么解决(数据加载困难怎么办)

数据载入失败怎么解决(数据加载困难怎么办)

r星是一个知名的游戏开发公司,旗下的侠盗猎车手系列等作品都深受玩家们的喜爱。最近却有玩家问迅游,遇到r星离线模式无法建立...

2023-11-24 22:01:30查看全文 >>

批量合并单元格且保留每行数据(批量按列合并单元格并保留内容)

批量合并单元格且保留每行数据(批量按列合并单元格并保留内容)

在EXCEL表格里,查询数据是常有的事,针对指定条件查询数据,结果无外乎就是查不到和查得到的区别,查得到又可能分为一个结...

2023-11-24 22:25:24查看全文 >>

文档排行