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 32768 61000

  • 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM