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

news/2024/9/23 11:12:54/

表现:

使用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.ppmy.cn/news/1517908.html

相关文章

MySQL命令汇总(超详细~)

本单元目标 一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★MySQL服务的登录和退出 ★ MySQL的常见命令和语法规…

我的arch配置

电脑配置&系统信息 电脑是20款的r7k,r74800h1650 系统:arch,DE:kde,shell:zsh 系统配置 主题配置 安装了这么多主题但有好用的也有一般的 颜色 应用程序外观 Breeze 微风就很不错 Plasma外观 AppleDark-ALL 窗口装饰元素 WhiteSur-dark sddm主题 图标…

Vue3组件通讯六种方式

1. Props Props 是 Vue.js 中最基本的组件通信方式之一,用于父组件向子组件传递数据。Props 是一种单向数据流,即父组件通过 props 将数据传递给子组件,子组件接收这些 props 并在内部使用它们,但不能直接修改它们。在 Vue3 中&a…

VMware安装Win10系统后,启动系统提示不支持的处理器,怎么解决

最近想在VMware16上装个Win10,专业版,结果网上找了个Win10专业版19系列版本的,使用大白菜装机工具安装,先分区,GUID的试了好几次,都没能成功,换MBR分区的也不行,反复试了好几次,在大…

OpenHarmony 实战开发——应用HAP包签名

背景 OpenAtom OpenHarmony(以下简称“OpenHarmony”)应用如果需要对外发布就必须要通过应用签名,DevEco Studio已提供自动签名功能加速应用开发,但自动签名仅限于debug开发,如需对外发布则必须完成release签名。 在…

django(二):第一个项目

接上文,django(一):项目搭建开始开发第一个项目。 1. 新建app 创建一个app应用,取名为company。 python manage.py startapp company注册app到settings.py文件中。 2.实现Model层 settings.py文件中配置数据库&am…

二叉树练习习题题集二(Java)

1. 思路:从上到下,从左到右,先遍历到的先打印,可以用队列的特性“先进先出”实现,先放进根结点,并创建一个一维数组,然后求此时队列的个数size,每次弹出队列的一个元素放进一维数组&…

FTP主动与被动模式

文件传送协议FTP: 提供交互式访问FTP屏蔽了各计算机系统的细节,因⽽适合于在异构⽹络中任意计算机之间传送⽂件。 传统FTP默认不加密 工作模式:(站在服务器的角度) 主动模式:服务器主动使用TCP20端口发起数…