我正在使用Retrofit和OkHttpClient在Android上构建Rest API。
前一段时间,我注意到api发出的第一个请求总是比其他所有请求花费更长的时间...一开始我并不在乎,因为这是可以接受的时间。
但是突然,请求时间跃升至60秒
所有这些时间都是浪费客户端,因为监视服务器我发现处理时间不到1秒...
我想知道所做的更改会导致如此高的影响,然后我意识到我更改了OkHttp的连接超时。
我只是为了测试而将值从10秒更改为60秒...
我做了一些实验,将connectTimeout设置为许多其他值,并且总是第一个请求花费的时间比超时时间长
有人知道什么可能导致这种奇怪的行为吗?该怎么解决?
PS。我需要在台式机上测试api,但没有发生此问题,我的意思是它仅在android设备上发生过(我尝试了几次)是什么原因?
答案 0 :(得分:0)
您可以在EventListener
中配置OkHttpClient
,然后使用它来查看时间如何使用。
答案 1 :(得分:0)
https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace
可能在前几个请求失败并超时。 OkHTTP将自动重试。
builder.retryOnConnectionFailure(false);
尝试关闭自动重试功能,然后看看会发生什么情况。
https://www.reddit.com/r/gfycat/comments/5y2dkm/psa_for_android_devs_how_to_work_around_ipv6/
这可能是ipv4 vs ipv6问题。这段代码优先处理ipv4地址。