Performance okhttp3中的连接超时会减慢响应时间
哎呀,, 我对okhttp版本4.9.0有一个奇怪的问题。它似乎增加了响应时间(client.newCall(request.execute())。如果我将connectTimeout增加到5秒,响应时间将增加到6如果我将其增加到15秒,响应时间将增加到16秒。下面是我如何使用生成器Performance okhttp3中的连接超时会减慢响应时间,performance,okhttp,Performance,Okhttp,哎呀,, 我对okhttp版本4.9.0有一个奇怪的问题。它似乎增加了响应时间(client.newCall(request.execute())。如果我将connectTimeout增加到5秒,响应时间将增加到6如果我将其增加到15秒,响应时间将增加到16秒。下面是我如何使用生成器 client = new OkHttpClient.Builder() .connectionPool(new ConnectionPool(2, 2, TimeUnit.SECO
client = new OkHttpClient.Builder()
.connectionPool(new ConnectionPool(2, 2, TimeUnit.SECONDS))
.cache(null)
.connectTimeout(2, TimeUnit.SECONDS)
.readTimeout(25, TimeUnit.SECONDS).build();
谢谢你的提示 它可能有两条或更多的路由,并且在第二条路由工作之前无法连接到第一条路由。很可能你有网络问题或类似问题,应该解决 要确认,请添加调试EventListener 由于您没有提供有用的复制,因此我们可以使用附加的路径进行模拟来测试
val client = OkHttpClient.Builder()
.dns(object: Dns {
override fun lookup(hostname: String): List<InetAddress> {
return listOf<InetAddress>(InetAddress.getByName("198.51.100.0")) + Dns.SYSTEM.lookup("httpbin.org")
}
})
.eventListenerFactory(LoggingEventListener.Factory())
.build()
val response = client.newCall(Request.Builder().url("https://httpbin.org/get").build()).execute()
println(response.body!!.string())
我在编译时使用了一个Android mobile(智能设备)解决方案,以兼容Java1.8。只需将以下内容添加到您使用okhttp的模块的defaultConfig部分下的gradle.build文件中。 android.compileOptions.sourceCompatibility 1.8
android.compileOptions.targetCompatibility 1.8非常感谢您知道为什么它总是达到connectTimeout指定的限制吗?我的印象是,它应该只需要花时间建立连接,然后继续,而不是到超时结束,因此,如果连接需要一秒钟,那么它应该进入下一步。我会尝试你的建议。好的,我删除了池,并有同样的问题。如果我增加超时,建立连接的时间将增加到超时值加上一两秒钟。我将进一步查看并获得okhttp的维护人员的响应。我有一个好的产品,我相信它可以解决。非常感谢你的帮助!我是一名项目维护人员。别惹麻烦。你能在这里提供调试输出吗?嗨,Yuri,这是输出。上面的示例侦听器必须具有更多重写的方法。我将连接超时设置为5秒。I/System.out:0.000 callStart I/System.out:0.001 dnsStart I/System.out:0.155 dnsEnd I/System.out:5.821 callEndYep。试试这个
Nov 23, 2020 7:44:01 AM okhttp3.internal.platform.Platform log
INFO: [0 ms] callStart: Request{method=GET, url=https://httpbin.org/get}
Nov 23, 2020 7:44:01 AM okhttp3.internal.platform.Platform log
INFO: [34 ms] proxySelectStart: https://httpbin.org/
Nov 23, 2020 7:44:01 AM okhttp3.internal.platform.Platform log
INFO: [35 ms] proxySelectEnd: [DIRECT]
Nov 23, 2020 7:44:01 AM okhttp3.internal.platform.Platform log
INFO: [36 ms] dnsStart: httpbin.org
Nov 23, 2020 7:44:01 AM okhttp3.internal.platform.Platform log
INFO: [150 ms] dnsEnd: [/198.51.100.0, httpbin.org/3.211.1.78, httpbin.org/35.170.225.136, httpbin.org/34.198.212.59, httpbin.org/52.6.34.179]
Nov 23, 2020 7:44:01 AM okhttp3.internal.platform.Platform log
INFO: [153 ms] connectStart: /198.51.100.0:443 DIRECT
Nov 23, 2020 7:44:11 AM okhttp3.internal.platform.Platform log
INFO: [10164 ms] connectFailed: null java.net.SocketTimeoutException: Connect timed out
Nov 23, 2020 7:44:11 AM okhttp3.internal.platform.Platform log
INFO: [10165 ms] connectStart: httpbin.org/3.211.1.78:443 DIRECT
Nov 23, 2020 7:44:11 AM okhttp3.internal.platform.Platform log
INFO: [10263 ms] secureConnectStart
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10663 ms] secureConnectEnd: Handshake{tlsVersion=TLS_1_2 cipherSuite=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 peerCertificates=[CN=httpbin.org, CN=Amazon, OU=Server CA 1B, O=Amazon, C=US, CN=Amazon Root CA 1, O=Amazon, C=US] localCertificates=[]}
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10676 ms] connectEnd: h2
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10678 ms] connectionAcquired: Connection{httpbin.org:443, proxy=DIRECT hostAddress=httpbin.org/3.211.1.78:443 cipherSuite=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 protocol=h2}
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10679 ms] requestHeadersStart
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10683 ms] requestHeadersEnd
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10903 ms] responseHeadersStart
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10904 ms] responseHeadersEnd: Response{protocol=h2, code=200, message=, url=https://httpbin.org/get}
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10907 ms] responseBodyStart
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10908 ms] responseBodyEnd: byteCount=272
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10908 ms] connectionReleased
Nov 23, 2020 7:44:12 AM okhttp3.internal.platform.Platform log
INFO: [10908 ms] callEnd
{
"args": {},
"headers": {
"Accept-Encoding": "gzip",
"Host": "httpbin.org",
"User-Agent": "okhttp/4.10.0-RC1",
"X-Amzn-Trace-Id": "Root=1-5fbb684d-0b7fa68f2cce945f25b5f1bf"
},
"origin": "81.100.210.134",
"url": "https://httpbin.org/get"
}