第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Okhttp3、http2多路復(fù)用POST請求高峰負(fù)載時(shí)響應(yīng)時(shí)間長

Okhttp3、http2多路復(fù)用POST請求高峰負(fù)載時(shí)響應(yīng)時(shí)間長

慕絲7291255 2022-07-06 10:48:27
我的應(yīng)用程序?qū)⑾蛭业?tomcat 服務(wù)器(啟用 http/2)發(fā)送大約 1000 個(gè) POST 請求/分鐘,它將輪詢給定的 url 并返回 html 和響應(yīng)時(shí)間,我想實(shí)現(xiàn)真正的 http/2 多路復(fù)用以重用 tcp 連接在我的應(yīng)用程序和 tomcat 服務(wù)器之間。我的客戶端使用 okhttp,我可以成功建立連接并長時(shí)間重用它,但是當(dāng)請求計(jì)數(shù)增加時(shí)(例如,排隊(duì):50,運(yùn)行:50),響應(yīng)時(shí)間也增加(它飆升到 2000 毫秒- 15000ms 甚至更糟,通常需要 300ms-500ms)。我可以理解這是因?yàn)?tcp 連接過載過多的請求,所以我決定打開多個(gè) tcp 連接并允許它在 tcp 連接之間分配請求負(fù)載。我強(qiáng)制客戶端使用打開多個(gè)連接Dispatcher dispatcher = new Dispatcher();dispatcher.setMaxRequests(100);dispatcher.setMaxRequestsPerHost(5);ConnectionPool cp = new ConnectionPool(5, 5, TimeUnit.MINUTES);在wireshark的幫助下,我可以看到打開了5個(gè)連接,還看到第一次握手成功后立即關(guān)閉了4個(gè)請求,我不知道這是否是http/2多路復(fù)用的預(yù)期行為。如果這是預(yù)期的行為,我該如何優(yōu)化它以減少每個(gè)請求在峰值負(fù)載時(shí)間的響應(yīng)時(shí)間?或者是否可以使用多個(gè)連接在峰值負(fù)載時(shí)間分配負(fù)載?我的示例程序如下,Security.insertProviderAt(Conscrypt.newProvider(), 1);sslContext = SSLContext.getInstance("TLSv1.3");sslContext.init(null, new TrustManager[] {    new X509TrustManager() {        @Override        public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {        }        @Override        public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {        }        @Override        public java.security.cert.X509Certificate[] getAcceptedIssuers() {            return new java.security.cert.X509Certificate[]{};        }    }       }, new java.security.SecureRandom());sslSocketFactory = sslContext.getSocketFactory();Dispatcher dispatcher = new Dispatcher();dispatcher.setMaxRequests(100);dispatcher.setMaxRequestsPerHost(5);ConnectionPool cp = new ConnectionPool(5, 1, TimeUnit.DAYS);okHttpClient = new OkHttpClient().newBuilder().sslSocketFactory(sslSocketFactory, (X509TrustManager)trustManager[0]).dispatcher(dispatcher).connectionPool(cp).hostnameVerifier(new HostnameVerifier() {    @Override    public boolean verify(String hostname, SSLSession session) {        return true;    }})
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

您看到的是 OkHttp 中連接合并的結(jié)果。OkHttp 不提前知道是否會建立 HTTP/2 連接(與 HTTP/1.1 相比),因此允許連接的 setMaxRequestsPerHost 值繼續(xù)進(jìn)行。目前*沒有客戶端負(fù)載平衡,因此它們會迅速合并為您所看到的單個(gè)連接。

目前,您可以通過多個(gè)客戶端或仔細(xì)管理完全不同的主機(jī)和連接來實(shí)現(xiàn)這一點(diǎn)。nb OkHttp 將在這里對您不利,并針對單個(gè)連接優(yōu)于多個(gè)連接的典型情況進(jìn)行優(yōu)化,例如 SSL 證書指定重疊的主題備用名稱?


*關(guān)注此問題以獲得支持https://github.com/square/okhttp/issues/4530


查看完整回答
反對 回復(fù) 2022-07-06
  • 1 回答
  • 0 關(guān)注
  • 415 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號