linux中內核的一個不錯的參數somaxconn
轉載自:點擊打開鏈接
在linux中,/proc/sys/net/core/somaxconn這個參數,linux中內核的一個不錯的參數somaxconn
看下其解析:
對於一個TCP連接,Server與Client需要通過三次握手來建立網絡連接.當三次握手成功後,
我們可以看到端口的狀態由LISTEN轉變為ESTABLISHED,接著這條鏈路上就可以開始傳送數據了.
每一個處於監聽(Listen)狀態的端口,都有自己的監聽隊列.監聽隊列的長度,與如下兩方面有關:
- somaxconn參數.
- 使用該端口的程序中listen()函數.
1. 關於somaxconn參數:
定義了系統中每一個端口最大的監聽隊列的長度,這是個全局的參數,默認值為128,具體信息為:
Purpose:
Specifies the maximum listen backlog.
Values:
Default: 128 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 攻擊也會有所幫助。
我們可以通過,
echo 1000 >/proc/sys/net/core/somaxconn
來修改這個參數。
linux中內核的一個不錯的參數somaxconn