TIME_WAIT過多造成什么后果威酒?
導致無法開啟新的連接,因為端口是有限的尤仍。
如果服務端有大量的close-wait的連接沒有及時關(guān)閉,而客戶端又不斷地發(fā)送新的連接請求饼拍,這樣就會打開的文件描述符數(shù)會不斷增加漓柑。在linux系統(tǒng)中欺缘,一個進程最大可以同時打開的文件描述符是有上限的,ulimit命令可以查到丛肢。當達到這個上限時蜂怎,服務端進程將無法新建socket來響應新的請求。
什么原因造成TIME_WAIT過多?
1、在高并發(fā)的場景下皇型,會出現(xiàn)大量的 TIME_WAIT 連接。
2寡键、大量的短連接存在
怎么解決TIME_WAIT過多問題员舵?
- 客戶端庄拇,調(diào)整短鏈接為長鏈接,HTTP 請求的頭部瞭郑,connection 設置為 keep-alive擒权,保持存活一段時間
- 服務器端允許 time_wait 狀態(tài)的 socket 被重用縮減 time_wait 時間,設置為 1 MSL(即剖效,2 mins)