我正在嘗試除錯與保持連接/連接重置相關的問題,發現tomcat 檔案說:
socket.soKeepAlive:
(bool) 套接字保持活動設定 (SO_KEEPALIVE) 的布林值。JVM 默認使用 > 如果未設定。
這不是由我正在除錯的應用程式設定的。有沒有辦法找出 jvm 使用的默認值?(例如通過檢查系統屬性?)
我無法通過檢查實際的保持活動行為來測驗行為,因為我無權訪問 VM。
uj5u.com熱心網友回復:
基于更多的研究和實驗,我自己回答。
默認值socket.soKeepAlive:來自SocketOptions.SO_KEEPALIVE的 JVM 檔案:
此套接字選項的初始值為 FALSE。可以隨時啟用或禁用套接字選項。
還要注意:
當啟用 SO_KEEPALIVE 選項時,作業系統可能會使用保持活動機制來定期探測連接的另一端
據我了解,這意味著tomcat 不會探測客戶端來檢查默認情況下已建立的連接是否處于活動狀態
Default Value ofkeepAliveTimeout:默認值是使用已經為connectionTimeout屬性設定的值
在我的情況下,這沒有被反映。connectionTimeout被設定為 10 秒,但仍然 tomcat 回應將保持活動標頭設定為僅 5 秒。
但是,我發現應用程式作者還設定了一個名為socket.soTimeout5 秒的屬性,tomcat 將其描述為:
這相當于標準屬性connectionTimeout。
我發現當conncetionTimeout和socket.soTimeout都設定時,socket.soTimeout優先因為更改socket.soTimeout值會導致保持活動標頭回傳的值相應地更改。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327305.html
上一篇:GlassFishservlet容器是否使用該catalina?
下一篇:顯示svg檔案的系結串列
