当前位置: 首页 > article >正文

okhttp异步请求连接阻塞问题排查

表现:

使用okhttp请求外部大模型接口时,当并发在2-5左右,出现请求被阻塞在建立http连接之前,阻塞时间超长(>20s,从日志看有160s存在)。但是httpconfig的connTimeout时间配置为100s,可以证明http请求被阻塞在建立连接之前,160s并非都是建立连接时间
由于是流式接口,使用okhttp-sse框架进行http长连接建立。

域名表现:

且对不同域名http请求进行先后压测,A先压测,耗时飙升到20s+时,进行B压测,耗时从1s开始累加直20s+。所以判断连接前的阻塞并非针对全局的http请求,而是与相同域名下的请求有关。所以将问题定位到okhttp对同一域名有并发请求限制,比如等待连接或某处存在等待队列。

问题定位:

我们本次使用的是okhttp的sse功能,属于http异步请求。
在OKhttp中,针对异步请求,在Dispatcher分发器里面有一个配置,异步请求同一域名同时存在的最大请求数量(setMaxRequestsPerHost=5),这就表明对同一域名的请求同一时刻仅允许有5个连接,但是大模型的接口耗时基本都在20s上下,无形中把这个问题放大了。
对该值调大之后,再次压测,解决。
在这里插入图片描述


http://www.kler.cn/a/283557.html

相关文章:

  • 灰狼优化算法
  • scrapy爬取中信证券销售金融产品信息
  • 使用CubeMX一键配置Freertos
  • 彻底理解ARXML中的PDU
  • 【AI技术对电商的影响】
  • Tomcat与Nginx之全面比较
  • 安卓13 背光反向 亮度反向 android13 backlight reverse
  • 家里两个路由器IP地址一样吗?‌IP地址冲突怎么办?‌
  • 数据结构代码分享
  • 机器视觉--光源打光技巧
  • C++中的异常处理与资源管理
  • 79、ansible-----playbook2
  • 以太坊 MEV 提案续篇:一文了解 Execution Tickets 和 Execution Auction
  • 金融涉案账户压降行动的实施成效与挑战
  • <WPF> xaml代码如何使用c#编写
  • 深入理解 Java 中 Map 和 Set 接口的高级用法
  • 【Rust光年纪】Rust多媒体处理库全面比较:探索安全高效的多媒体处理利器
  • Docker私有镜像仓库Harbor安装并推拉镜像
  • uniapp APP版本更新
  • easyExcel 填充写时,动态合并单元格
  • SQL视图:简化复杂查询的利器
  • Django+Vue社区养老管理系统的设计与实现
  • 光庭信息半年报:营收利润「双」下降,汽车软件业务竞争加剧
  • 揭晓9款敏捷团队必备的协作工具选择
  • MAC上Homebrew常用命令
  • LeetCode49题的反思