我有一個帶有嵌入式 tomcat 服務器的 spring boot 應用程式。為了限制 DOS 攻擊的影響,我將該屬性設定server.tomcat.connection-timeout為 3 秒。AconnectionTimeout是服務器將自動關閉與客戶端的連接的時間限制。
因此,如果在我的情況下,客戶端需要超過 3 秒才能完成請求,則連接將自動超時。但是,我還不清楚當它是服務器端的一個行程導致延遲時到底會發生什么。
舉個例子,我的 Web 應用程式正在使用一個 hikari 連接池來管理與資料庫的連接。它最多可以有 10 個資料庫連接。如果所有 10 個都在使用中,則任何傳入請求都必須等待其中一個資料庫連接可用。如果這個等待時間超過 3 秒,tomcat 連接會超時嗎?還是連接仍然可用,因為延遲不是由客戶端引起的?
謝謝
uj5u.com熱心網友回復:
根據Tomcat 9.0 檔案,connection-timeout是:
此連接器在接受連接后將等待呈現請求 URI 行的毫秒數。[...] 除非
disableUploadTimeout設定為false,否則在讀取請求正文(如果有)時也將使用此超時。
這是客戶端發送請求所花費的時間。這與服務器回應請求所需的時間無關。
所以 ...
如果這個等待時間超過 3 秒,tomcat 連接會超時嗎?
不,它不會1。事實上,似乎 Tomcat 對(同步)請求完成所需的時間沒有任何限制。
當然,如果服務器花費的時間太長,客戶端可能會使請求超時。服務器不太可能注意到這一點,因此它可以放棄請求。
1 - 假設檔案是準確的。但是,該配置選項已存在于多個 Tomcat 版本中,并且具有相同的描述。如果檔案有誤,這肯定會被注意到、報告和修復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411840.html
標籤:
