這里提及的參數是和IPv4網絡有關的linux內核參數,我們可以將這些內核參數的值追加到linux系統的/etc/sysctl.conf文件中,然后使用如下命令使修改生效:
[root@bogon ~]# /sbin/sysctl -p
1、net.core.netdev_max_backlog參數
參數net.core.netdev_max_backlog表示當每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許發送到隊列的數據包的最大數目,一般默認值為128(可能不同的linux系統該數值也不同)。nginx服務器中定義的NGX_LISTEN_BACKLOG默認為511。我們可以將它調整一下:
net.core.netdev_max_backlog = 262144
2、net.core.somaxconn參數
該參數用於調節系統同時發起的TCP連接數,一般默認值為128.在客戶端存在高並發請求的情況下,該默認值較小,肯那個導致連接超時或重傳問題,我們可以根據實際需要結合並發請求數來調節此值。
net.core.somaxconn = 262144
3、net.ipv4.tcp_max_orphans參數
該參數用於設定系統中最多允許存在多少tcp套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,沒有與用戶文件句柄關聯的tcp套接字符將立即被復位,同時給出警告信息。這個限制只是為了防止簡單的DoS工具。一般在系統內存比較充足的情況下,可以增大這個參數的賦值:
net.ipv4.tcp_max_orphans = 262144
4、net.ipv4.tcp_max_syn_backlog參數
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有128M內存的系統而言,缺省值是1024,小內存的系統則是128。一般在系統內存比較充足的情況下,可以增大這個參數的賦值:
net.ipv4.tcp_max_syn_backlog = 262144
5、net.ipv4.tcp_timestamps參數
該參數用於設置時間戳,可以避免序列號的卷繞。一個1Gbps的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的數據包。這里需要將其關掉:
net.ipv4.tcp_timestamps = 0
6、net.ipv4.tcp_synack_retries參數
該參數用於設置內核放棄TCP連接之前向客戶端發送SYN+ACK包的數量。為了建立對端的連接服務,服務器和客戶端需要進行三次握手,第二次握手期間,內核需要發送SYN並附帶一個回應前一個SYN的ACK,一個參數主要影響這個過程,一般賦值為1,即內核放棄連接之前發送一次SYN+ACK包,可以設置其為:
net.ipv4.tcp_synack_retries = 1
7、net.ipv4.tcp_syn_retries參數
該參數的作用與上一個參數類似,設置內核放棄建立連接之前發送SYN包的數量,他的賦值和上個參數一樣即可:
net.ipv4.tcp_syn_retries = 1
