1. 程式人生 > >Linux系統核心引數優化

Linux系統核心引數優化

Linux伺服器核心引數優化

cat >> /etc/sysctl.conf<< EOF

# kernel optimization

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.ip_local_port_range = 4000 65000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

EOF

sysctl -p

將上面的核心引數加入/etc/sysctl.conf檔案中,執行如下命令使之生效:

sysctl -p

sysctl.conf核心檔案中常用引數含義:

·       net.ipv4.tcp_fin_timeout
表示套接字由本端要求關閉,這個引數決定了它保持在FIN-WAIT-2狀態的時間,預設值是60秒。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_fin_timeout 60

·       net.ipv4.tcp_tw_reuse
表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連線,預設值為0,表示關閉。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_tw_reuse 0

·       net.ipv4.tcp_tw_recycle
表示開啟TCP連線中TIME-WAIT sockets的快速回收。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_tw_recycle,預設為0,表示關閉。
提示:reuse和recycle這兩個引數是為防止生產環境下Web、Squid等業務伺服器time_wait網路狀態數量過多設定的。

·       net.ipv4.tcp_syncookies
表示開啟SYN Cookies功能。當出現SYN等待佇列溢位時,啟用Cookies來處理,可防範少量SYN攻擊,這個引數也可以不新增。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_syncookies,預設值為1

·       net.ipv4.tcp_keepalive_time
表示當keepalive啟用時,TCP傳送keepalive訊息的頻度。預設是2小時,建議改為10分鐘。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_keepalive_time,預設為7200秒。

·       net.ipv4.ip_local_port_range
該選項用來設定允許系統開啟的埠範圍,即用於向外連線的埠範圍。
該引數對應系統路徑為:/proc/sys/net/ipv4/ip_local_port_range 3276861000

·       net.ipv4.tcp_max_syn_backlog
表示SYN佇列的長度,預設為1024,建議加大佇列的長度為8192或更多,這樣可以容納更多等待連線的網路連線數。
該引數為伺服器端用於記錄那些尚未收到客戶端確認資訊的連線請求最大值。
該引數物件系統路徑為:/proc/sys/net/ipv4/tcp_max_syn_backlog

·       net.ipv4.tcp_max_tw_buckets
表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數值,TIME_WAIT套接字將立刻被清除並列印警告資訊。
預設為180000,對於Apache、Nginx等伺服器來說可以將其調低一點,如改為5000~30000,不通業務的伺服器也可以給大一點,比如LVS、Squid。
此項引數可以控制TIME_WAIT套接字的最大數量,避免Squid伺服器被大量的TIME_WAIT套接字拖死。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_max_tw_buckets

·       net.ipv4.tcp_synack_retries
引數的值決定了核心放棄連線之前傳送SYN+ACK包的數量。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_synack_retries,預設值為5

·       net.ipv4.tcp_syn_retries
表示在核心放棄建立連線之前傳送SYN包的數量。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_syn_retries 5

·       net.ipv4.tcp_max_orphans
用於設定系統中最多有多少個TCP套接字不被關聯到任何一個使用者檔案控制代碼上。
如果超過這個數值,孤立連線將被立即被複位並打印出警告資訊。
這個限制只有為了防止簡單的DoS攻擊。不能過分依靠這個限制甚至認為減少這個值,更多的情況是增加這個值。
該引數對應系統路徑為:/proc/sys/net/ipv4/tcp_max_orphans 65536

·       net.core.somaxconn
該選項預設值是128,這個引數用於調節系統同時發起的TCP連線數,在高併發的請求中,預設的值可能會導致連結超時或重傳,因此,需要結合併發請求數來調節此值。
該引數對應系統路徑為:/proc/sys/net/core/somaxconn 128

·       net.core.netdev_max_backlog
表示當每個網路介面接收資料包的速率比核心處理這些包的速率快時,允許傳送到佇列的資料包最大數。
該引數對應系統路徑為:/proc/sys/net/core/netdev_max_backlog,預設值為1000