1. 程式人生 > >linux中內核的一個不錯的參數somaxconn

linux中內核的一個不錯的參數somaxconn

print pac n) back cti blank cor imu 大小

轉載自:點擊打開鏈接

在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