net.nf_conntrack_max = 65536000
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.route.gc_timeout = 100
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 262144
net.core.netdev_max_backlog = 262144
sysctl: setting key "net.core.somaxconn": Invalid argument
net.core.somaxconn = 262144
net.ipv4.tcp_mem = 94500000 915000000 927000000算法
# allow testing with buffers up to 128MB net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 # increase Linux autotuning TCP buffer limit to 64MB net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 # increase the length of the processor input queue net.core.netdev_max_backlog = 250000 # recommended default congestion control is htcp net.ipv4.tcp_congestion_control = htcp # recommended for hosts with jumbo frames enabled net.ipv4.tcp_mtu_probing = 1 net.netfilter.nf_conntrack_max = 2100000 net.netfilter.nf_conntrack_max = 1048576 net.netfilter.ip_conntrack_tcp_timeout_established = 3600 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
Linux之TCPIP內核參數優化 /proc/sys/net目錄 全部的TCP/IP參數都位於/proc/sys/net目錄下(請注意,對/proc/sys/net目錄下內容的修改都是臨時的,任何修改在系統重啓後都會丟失),例以下面這些重要的參數: 參數(路徑+文件) 描述 默認值 優化值 /proc/sys/net/core/rmem_default 默認的TCP數據接收窗口大小(字節)。 229376 256960 /proc/sys/net/core/rmem_max 最大的TCP數據接收窗口(字節)。 131071 513920 /proc/sys/net/core/wmem_default 默認的TCP數據發送窗口大小(字節)。 229376 256960 /proc/sys/net/core/wmem_max 最大的TCP數據發送窗口(字節)。 131071 513920 /proc/sys/net/core/netdev_max_backlog 在每一個網絡接口接收數據包的速率比內核處理這些包的速率快時,容許送到隊列的數據包的最大數目。 1000 2000 /proc/sys/net/core/somaxconn 定義了系統中每個端口最大的監聽隊列的長度,這是個全局的參數。 128 2048 /proc/sys/net/core/optmem_max 表示每一個套接字所容許的最大緩衝區的大小。 20480 81920 /proc/sys/net/ipv4/tcp_mem 肯定TCP棧應該如何反映內存使用,每一個值的單位都是內存頁(一般是4KB)。第一個值是內存使用的下限;第二個值是內存壓力模式開始對緩衝區使用應用壓力的上限;第三個值是內存使用的上限。在這個層次上能夠將報文丟棄,從而減小對內存的使用。對於較大的BDP能夠增大這些值(注意,其單位是內存頁而不是字節)。 94011 125351 188022 131072 262144 524288 /proc/sys/net/ipv4/tcp_rmem 爲自動調優定義socket使用的內存。第一個值是爲socket接收緩衝區分配的最少字節數;第二個值是默認值(該值會被rmem_default覆蓋),緩衝區在系統負載不重的狀況下能夠增加到這個值;第三個值是接收緩衝區空間的最大字節數(該值會被rmem_max覆蓋)。 4096 87380 4011232 8760 256960 4088000 /proc/sys/net/ipv4/tcp_wmem 爲自動調優定義socket使用的內存。第一個值是爲socket發送緩衝區分配的最少字節數;第二個值是默認值(該值會被wmem_default覆蓋),緩衝區在系統負載不重的狀況下能夠增加到這個值;第三個值是發送緩衝區空間的最大字節數(該值會被wmem_max覆蓋)。 4096 16384 4011232 8760 256960 4088000 /proc/sys/net/ipv4/tcp_keepalive_time TCP發送keepalive探測消息的間隔時間(秒),用於確認TCP鏈接是否有效。 7200 1800 /proc/sys/net/ipv4/tcp_keepalive_intvl 探測消息未得到響應時,重發該消息的間隔時間(秒)。 75 30 /proc/sys/net/ipv4/tcp_keepalive_probes 在認定TCP鏈接失效以前,最多發送多少個keepalive探測消息。 9 3 /proc/sys/net/ipv4/tcp_sack 啓用有選擇的應答(1表示啓用),經過有選擇地應答亂序接收到的報文來提升性能,讓發送者只發送丟失的報文段,(對於廣域網通訊來講)這個選項應該啓用,可是會增長對CPU的佔用。 1 1 /proc/sys/net/ipv4/tcp_fack 啓用轉發應答,能夠進行有選擇應答(SACK)從而減小擁塞狀況的發生,這個選項也應該啓用。 1 1 /proc/sys/net/ipv4/tcp_timestamps TCP時間戳(會在TCP包頭增長12個字節),以一種比重發超時更精確的方法(參考RFC 1323)來啓用對RTT 的計算,爲實現更好的性能應該啓用這個選項。 1 1 /proc/sys/net/ipv4/tcp_window_scaling 啓用RFC 1323定義的window scaling,要支持超過64KB的TCP窗口,必須啓用該值(1表示啓用),TCP窗口最大至1GB,TCP鏈接雙方都啓用時才生效。 1 1 /proc/sys/net/ipv4/tcp_syncookies 表示是否打開TCP同步標籤(syncookie),內核必須打開了CONFIG_SYN_COOKIES項進行編譯,同步標籤能夠防止一個套接字在有過多試圖鏈接到達時引發過載。 1 1 /proc/sys/net/ipv4/tcp_tw_reuse 表示是否容許將處於TIME-WAIT狀態的socket(TIME-WAIT的端口)用於新的TCP鏈接 。 0 1 /proc/sys/net/ipv4/tcp_tw_recycle 可以更快地回收TIME-WAIT套接字。 0 1 /proc/sys/net/ipv4/tcp_fin_timeout 對於本端斷開的socket鏈接,TCP保持在FIN-WAIT-2狀態的時間(秒)。對方可能會斷開鏈接或一直不結束鏈接或不可預料的進程死亡。 60 30 /proc/sys/net/ipv4/ip_local_port_range 表示TCP/UDP協議容許使用的本地端口號 32768 61000 1024 65000 /proc/sys/net/ipv4/tcp_max_syn_backlog 對於還未得到對方確認的鏈接請求,可保存在隊列中的最大數目。若是服務器常常出現過載,能夠嘗試增長這個數字。 2048 2048 /proc/sys/net/ipv4/tcp_low_latency 容許TCP/IP棧適應在高吞吐量狀況下低延時的狀況,這個選項應該禁用。 0 /proc/sys/net/ipv4/tcp_westwood 啓用發送者端的擁塞控制算法,它能夠維護對吞吐量的評估,並試圖對帶寬的總體利用狀況進行優化,對於WAN 通訊來講應該啓用這個選項。 0 /proc/sys/net/ipv4/tcp_bic 爲快速長距離網絡啓用Binary Increase Congestion,這樣能夠更好地利用以GB速度進行操做的連接,對於WAN通訊應該啓用這個選項。 1 /etc/sysctl.conf文件 /etc/sysctl.conf是一個容許你改變正在運行中的Linux系統的接口。它包含一些TCP/IP堆棧和虛擬內存系統的高級選項,可用來控制Linux網絡配置,因爲/proc/sys/net目錄內容的臨時性,建議把TCPIP參數的修改添加到/etc/sysctl.conf文件, 而後保存文件,使用命令「/sbin/sysctl –p」使之當即生效。具體修改方案參照上文: net.core.rmem_default = 256960 net.core.rmem_max = 513920 net.core.wmem_default = 256960 net.core.wmem_max = 513920 net.core.netdev_max_backlog = 2000 net.core.somaxconn = 2048 net.core.optmem_max = 81920 net.ipv4.tcp_mem = 131072 262144 524288 net.ipv4.tcp_rmem = 8760 256960 4088000 net.ipv4.tcp_wmem = 8760 256960 4088000 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 2048