109
中電雲集
linux內核中管理TCP偵聽隊列長度參數:somaxconn
在linux中,/proc/sys/net/core/somaxconn這個參數,
看下其解析:
對於一個TCP連接,Server與Client需要通過三次握手來建立網絡連接.當三次握手成功後,
我們可以看到端口的狀態由LISTEN轉變為ESTABLISHED,接著這條鏈路上就可以開始傳送數據了.
每一個處於監聽(Listen)狀態的端口,都有自己的監聽隊列.監聽隊列的長度,與如下兩方麵有關:
- somaxconn參數.
- 使用該端口的程序中listen()函數.
1. 關於somaxconn參數:
定義了係統中每一個端口最大的監聽隊列的長度,這是個全局的參數,默認值為1024,具體信息為:
Purpose:
Specifies the maximum listen backlog.
Values:
Default: 1024 connections
Range: 0 to MAXSHORT
Type: Connect
Diagnosis:
N/A
Tuning
Increase this parameter on busy Web servers to handle peak connection rates.
看下FREEBSD的解析:
限製了接收新 TCP 連接偵聽隊列的大小。對於一個經常處理新連接的高負載 web服務環境來說,默認的 128 太小了。 大多數環境這個值建議增加到 1024 或者更多。 服務進程會自己限製偵聽隊列的大小(例如 sendmail(8) 或者 Apache), 常常在它們的配置文件中有設置隊列大小的選項。大的偵聽隊列對防止拒絕服務 DoS 攻擊也會有所幫助。
最後更新:2017-01-04 22:34:54