亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

java 11 HttpClient 導致無休止的 SSL 循環

java 11 HttpClient 導致無休止的 SSL 循環

小唯快跑啊 2022-06-04 09:36:13
我正在使用新 java.net.http.HttpClient的sendAsync方法。位于HttpClientSingelton 內部,并且像這樣創建一次: HttpClient.newBuilder().build()所以真的沒什么特別的。這些請求可能是POST,GET但我不知道是哪個導致了麻煩。一天只有幾個請求,但有時一個線程會使用 100% 的 cpu 內核。不是馬上,而是在請求完成一段時間后。因此,當甚至發生 2 個無限循環時,我進行了線程轉儲,以下 2 個線程脫穎而出:"HttpClient-4-Worker-5" #144 daemon prio=5 os_prio=0 cpu=511298.10ms elapsed=520.71s tid=0x00007f684403e800 nid=0x2d6b runnable  [0x00007f68ac162000]   java.lang.Thread.State: RUNNABLE        at jdk.internal.net.http.common.SSLFlowDelegate$Writer.processData([email protected]/SSLFlowDelegate.java:771)        at jdk.internal.net.http.common.SSLFlowDelegate$Writer$WriterDownstreamPusher.run([email protected]/SSLFlowDelegate.java:645)        at jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run([email protected]/SequentialScheduler.java:147)        at jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run([email protected]/SequentialScheduler.java:198)        at jdk.internal.net.http.common.SequentialScheduler.runOrSchedule([email protected]/SequentialScheduler.java:271)        at jdk.internal.net.http.common.SequentialScheduler.runOrSchedule([email protected]/SequentialScheduler.java:224)        at jdk.internal.net.http.common.SSLFlowDelegate$Writer.triggerWrite([email protected]/SSLFlowDelegate.java:722)        at jdk.internal.net.http.common.SSLFlowDelegate.doHandshake([email protected]/SSLFlowDelegate.java:1024)        at jdk.internal.net.http.common.SSLFlowDelegate.doClosure([email protected]/SSLFlowDelegate.java:1094)        at jdk.internal.net.http.common.SSLFlowDelegate$Reader.unwrapBuffer([email protected]/SSLFlowDelegate.java:500)        at jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData([email protected]/SSLFlowDelegate.java:389)相同的觀察結果,但在另一個容器上只有一個線程受到影響。
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

正如@jspcal 在禁用 TLS 1.3 之前所說。


tl;dr:通過擴展/覆蓋禁用 tlsv1.3


<java_home>/conf/security/java.securityjdk.tls.disabledAlgorithms財產_


由于我的應用程序在 docker 容器中運行,因此我將基礎映像更改為禁用 tls1.3


FROM openjdk:11-jre

...


RUN sed -i "/jdk.tls.disabledAlgorithms=/ s/=.*/=TLSv1.3, SSLv3, RC4, MD5withRSA, DH keySize < 1024, EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC/" $(readlink -f /usr/bin/java | sed "s:bin/java::")/conf/security/java.security

據我所知,無法通過系統屬性設置此(安全)屬性!另請參閱sun.security.util.DisabledAlgorithmConstraints#PROPERTY_TLS_DISABLED_ALGS實際準備好的屬性。


更新:錯誤仍然存在于 11.0.2


查看完整回答
反對 回復 2022-06-04
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

嘗試禁用TLSv1.3SSLv3查看是否有幫助。

在命令行上設置系統屬性:-Djdk.tls.disabledAlgorithms=TLSv1.3

或者在中定義屬性<java_home>/conf/security/java.security

如果您認為這是一個實現錯誤,您可能需要打開一個問題。


查看完整回答
反對 回復 2022-06-04
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

該錯誤已針對 11.0.10 Java 版本進行了修復。



查看完整回答
反對 回復 2022-06-04
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號