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

首页 > 实用技巧 > 作者:YD1662023-11-24 22:31:08

图16 G1参数调优后效果

6.线程异步改成 NIO 异步编程

NIO(非阻塞 IO)可以减少线程数量,提高线程的利用率,从而降低线程切换带来的超时。

1)分析:CPU 指标

分析 CPU 相关指标,如果出现 CPU 利用率正常,CPU Load 高需要重点关注(如果是CPU 利用率高的情况,说明 CPU 本身就很繁忙,那 CPU Load 高也比较正常)。

在分析之前,先介绍几个概念:

CPU 将时间分成若干个时间片,每个时间片分配给一个线程使用。当一个时间片用完后,CPU 会停止当前线程的执行,进行上下文切换到下一个任务,以此类推。

这样可以让多个任务在同一时间内并发执行,提高系统的效率和响应速度。

下图模拟了单核 CPU 执行的过程,需要注意的进行上下文切换是需要开销的,但实际一次上下文切换需要的时间很短(一般是微秒级别)。

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

图17 CPU执行线程流程

  • CPU利用率
  • 按时间片维度来理解,假设每次时间片都正好被使用完。

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

    从上面概念分析,如果出现 CPU 利用率正常,但是 CPU Load 高,那说明 CPU 空闲时间片、等待线程数很多,正在使用的时间片很少,这种情况要减少 CPU Load 需要减少等待线程数。

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

    2)分析:实际案例

    我们之前生产遇到过多次 CPU Load 高 CPU 利用率正常的情况。问题出现前后代码没有变动,比较明显的变化是流量有上涨。排查代码发现有使用线程池并发调用接口的地方,调用方式如下图。

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

    上一页12345下一页

    栏目热文

    文档排行

    本站推荐

    Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.