linux的內核優化为例講解,僅供大家参考:
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 = 400065000
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
#以下参數是對iptables防火牆的優化。
#CentOS 5.X:
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
#CentOS 6.X:
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
注意:在此優化過程中可能會有報錯
舉例:
5.8版本上
error: “net.ipv4.ip_conntrack_max”is an unknown key
error: “net.ipv4.netfilter.ip_conntrack_max”is an unknown key
error: “net.ipv4.netfilter.ip_conntrack_tcp_timeout_established”is an unknown key
error: “net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait”is an unknown key
error: “net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait”is an unknown key
error: “net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait”is an unknown key
這個錯誤可能是你的防火牆沒有開启或者自動處理可載入的模塊ip_conntrack沒有自動載入,解决辦法有兩個,一個是開启防火牆,另一個是自動處理開載入的模塊ip_conntrack
modprobe ip_conntrack
echo “modprobe ip_conntrack”>> /etc/rc.local
6.4版本上
error: “net.nf_conntrack_max”isan unknown key
error: “net.netfilter.nf_conntrack_max”isan unknown key
error: “net.netfilter.nf_conntrack_tcp_timeout_established”isan unknown key
error: “net.netfilter.nf_conntrack_tcp_timeout_time_wait”isan unknown key
error: “net.netfilter.nf_conntrack_tcp_timeout_close_wait”isan unknown key
error: “net.netfilter.nf_conntrack_tcp_timeout_fin_wait”isan unknown key
這個錯誤可能是你的防火牆沒有開启或者自動處理可載入的模塊ip_conntrack沒有自動載入,解决辦法有兩個,一個是開启防火牆,另一個是自動處理開載入的模塊ip_conntrack
modprobe nf_conntrack
echo “modprobe nf_conntrack”>> /etc/rc.local
6.4版本上
error: “net.bridge.bridge-nf-call-ip6tables”isan unknown key
error: “net.bridge.bridge-nf-call-iptables”isan unknown key
error: “net.bridge.bridge-nf-call-arptables”isan unknown key
這個錯誤是由於自動處理可載入的模塊bridge沒有自動載入,解决辦法是自動處理開載入的模塊ip_conntrack
modprobe bridge
echo “modprobe bridge”>> /etc/rc.local
以上一些優化参數的解釋說明:
参數
說明
net.ipv4.tcp_fin_timeout
表示如何套接字由本端要求關閉,這個参數决定了它保持在FIN-WAIT-2狀態的時間,默認值是60秒。
該参數對應系統路徑为:/proc/sys/net/ipv4/tcp_fin_timeout 60
net.ipv4.tcp_tw_reuse
表示開启重用。允許將TIME-WAIT scokets 重新用於新的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攻擊,CentOS5系列默認值为1,表示開启,因此這個参數也可以不添加:
該参數對應系統路徑为:/proc/sys/net/ipv4/tcp_syncookies默認为1
net.ipv4.tcp_keepalive_time
表示當keepalive起用的時候,TCP發送leepalive消息的頻度。缺省是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套接字的最大數量,避免squid服務器被大量的TIME_WAIT套接字拖死。
該参數對應系統路徑为:/proc/sys/net/ipv4/tcp_max_tw_buckets
net.ipv4.tcp_syn_retries
表示在內核放棄建立連接之前發送SYN包的數量。該参數對應系統路徑为:/proc/sys/net/ipv4/tcp_syn_retries 5
net.ipv4.tcp_synack_retries
参數的值决定了內核放棄連接之前發送SYN+ACK包的數量。
該参數對應系統路徑为:/proc/sys/net/ipv4/tcp_synack_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