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

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.mrgr.cn/news/14930.html

相关文章:

  • Microsoft 将在 CrowdStrike 服务中断后举办 Windows 安全峰会
  • 2024前端面试题分享
  • python 实现一个简单的网页爬虫程序
  • 基于 XILINX FPGA 的 Cameralink Full 模式相机采集系统技术实施方案研究报告
  • Mybatis部分笔记二——Spring:
  • elasticsearch存入数据嵌入式数据解决扁平化查询问题
  • 告别繁琐,拥抱简单!用户好评如潮的录屏软件
  • app抓包环境的搭建详细教程
  • chapter09-项目——(房屋出租系统)——day11
  • vue打印数据
  • 深入理解DPO(Direct Preference Optimization)算法
  • #C++ 笔记三
  • 最大子数组(有限制)
  • 【BPF之旅】认识eBPF
  • cola_os学习笔记(下)
  • mysql8.0查询等级排名可使用窗口函数,那5.7的版本呢?
  • 设计模式-简单工厂模式工厂方法模式
  • cesium模型加载-点击-高亮
  • 自定义全局变量在uniapp的Vuex应用
  • 数字三角形