Performance okhttp3中的连接超时会减慢响应时间

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

哎呀,, 我对okhttp版本4.9.0有一个奇怪的问题。它似乎增加了响应时间(client.newCall(request.execute())。如果我将connectTimeout增加到5秒,响应时间将增加到6如果我将其增加到15秒,响应时间将增加到16秒。下面是我如何使用生成器

 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"
}