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上下,无形中把这个问题放大了。

对该值调大之后,再次压测,解决。

相关推荐
猿小羽16 小时前
OkHttp vs Retrofit 技术分析报告 - 1769404939594
http·okhttp·retrofit·csdn
AylKfTscDFw18 小时前
EtherCAT总线轴控制,大型非标组装检测设备成熟设备程序,注释非常详细,组合应用日本进口机...
okhttp
龙信科技4 天前
【国内电子数据取证厂商龙信科技】Charles的简单介绍及基本配置
科技·okhttp
Filotimo_5 天前
那在HTML中,action是什么
前端·okhttp·html
灵感菇_6 天前
Android OkHttp框架全解析
android·java·okhttp·网络编程
HIT_Weston7 天前
104、【Ubuntu】【Hugo】搭建私人博客:搜索功能(AJAX请求)
ubuntu·ajax·okhttp
雨声不在7 天前
okhttp的自定义dns解析
okhttp·dns
凛_Lin~~9 天前
安卓网络框架——OkHttp源码解析(基于3.14.x)
android·网络·okhttp
岁岁种桃花儿10 天前
XMLHttpRequest 从入门到实战:GET/POST 请求完整案例
ajax·okhttp
月月玩代码11 天前
OkHttp,Square出品的Java/Android HTTP客户端!
android·java·okhttp