vm.swappiness = 10
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.tcp_keepalive_time =
1200
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_tw_buckets
= 5000
net.ipv4.tcp_mem = 786432 1048576 1572864
net.core.wmem_max =
873200
net.core.rmem_max = 873200
net.ipv4.tcp_wmem = 8192 436600
873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.core.somaxconn =
256
net.core.netdev_max_backlog = 1000
net.ipv4.tcp_max_syn_backlog =
2048
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_keepalive_intvl =
30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.conf.lo.arp_ignore =
0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.all.arp_ignore =
0
net.ipv4.conf.all.arp_announce =
0
#下面是iptables相關
net.ipv4.ip_conntrack_max =
6553600
net.ipv4.netfilter.ip_conntrack_max =
6553600
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established =
300
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
net.ipv4.neigh.default.gc_thresh1 =
10240
net.ipv4.neigh.default.gc_thresh2 =
40960
net.ipv4.neigh.default.gc_thresh3 =
81920
幾個解釋:
swappiness的值的大小對如何使用swap分區是有著很大的聯絡的。swappiness=0的時候表示最大限度使用實體記憶體,然後才是
swap空間,swappiness=100的時候表示積極的使用swap分區,並且把記憶體上的資料及時的搬運到swap空間裡面。兩個極端,對於 centos
linux 5的預設設定,這個值等於60,建議修改為10。
net.ipv4.tcp_syncookies = 1
#表示開啟SYN
Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,預設為0,表示關閉;
net.ipv4.tcp_tw_reuse
= 1
#表示開啟重用。允許將TIME-WAIT
sockets重新用於新的TCP串連,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle =
1
#表示開啟TCP串連中TIME-WAIT sockets的快速回收,預設為0,表示關閉。
net.ipv4.tcp_fin_timeout =
30
#表示如果通訊端由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。
net.ipv4.tcp_keepalive_time
= 1200
#表示當keepalive起用的時候,TCP發送keepalive訊息的頻度。預設是2小時,改為20分鐘。
net.ipv4.ip_local_port_range
= 1024 65000
#表示用於向外串連的連接埠範圍。預設情況下很小:32768到61000,改為1024到65000。
net.ipv4.tcp_max_tw_buckets
=
5000
#表示系統同時保持TIME_WAIT通訊端的最大數量,如果超過這個數字,
#TIME_WAIT通訊端將立刻被清除並列印警告資訊。預設為180000,改為5000。
#對於Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT通訊端數量,
#但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT通訊端的最大數量,避免Squid伺服器被大量的TIME_WAIT通訊端拖死。
相關參數說明:ARP支援一個sysctl介面,可以用以配置全域參數或逐個網路介面地進行配製。該sysctl可以通過/proc/sys
/net/ipv4/neigh/*/*檔案或者使用sysctl(2)介面來訪問。系統中每個介面都在/proc/sys/net/ipv4
/neigh/.中有自己的目錄。`default'目錄中的設定用於所有建立的裝置。sysctl相關的時間是以秒為單位,除非特別聲明過.
anycast_delay
對IPv6相鄰請求資訊的回複的最大延遲時間;目前還不支援anycast。預設值為1秒。 app_solicit 這是在使用多路廣播探測(multicast
probe)前,經過網路連接送到使用者間隙ARP連接埠監控程式的探測(probe)最大數目(見mcast_solicit)。預設值為0。 base_reachable_time 一旦發現相鄰記錄,至少在一段介於base_reachable_time/2和3*base_reachable_time/2之間的隨機時間內,該記錄是有效。如果收到上層協議的肯定反饋,那麼記錄的有效期間將延長。預設值是30秒。 delay_first_probe_time 發現某個相鄰層記錄無效(stale)後,發出第一個探測要等待的時間。預設值是5秒。 gc_interval 收集相鄰層記錄的無用記錄的垃圾收集程式的運行周期,預設為30秒。 gc_stale_time 決定檢查一次相鄰層記錄的有效性的周期。當相鄰層記錄失效時,將在給它發送資料前,再解析一次。預設值是60秒。 gc_thresh1 存在於ARP快取中的最少層數,如果少於這個數,垃圾收集器將不會運行。預設值是128。 gc_thresh2 儲存在ARP快取中的最多的記錄軟式節流。垃圾收集器在開始收集前,允許記錄數超過這個數字5秒。預設值是512。 gc_thresh3 儲存在ARP快取中的最多記錄的硬限制,一旦快取中的數目高於此,垃圾收集器將馬上運行。預設值是1024。 locktime ARP記錄儲存在快取內的最短時間(jiffy數),以防止存在多個可能的映射(potential
mapping)時,ARP快取系統的顛簸(經常是由於網路的錯誤配置而引起)。預設值是1秒。 mcast_solicit 在把記錄標記為不可抵達的之前,用多路廣播/廣播(multicast/broadcast)方式解析地址的最大次數。 預設值是3。 proxy_delay 當接收到有一個請求已知的代理ARP地址的ARP請求時,在回應前可以延遲的jiffy(時間單位,見BUG)數目。這樣,以防止網路風暴。預設值是0.8秒。 proxy_qlen 能放入代理ARP地址隊列(proxy-ARP addresses)的資料包最大數目。預設值是64。 retrans_time 重發一個請求前的等待jiffy(時間單位,見BUG)的數目。預設值是1秒。 ucast_solicit 詢問ARP連接埠監控程式前,試圖發送單探測(unicast probe)的次數。(見app_solicit).預設值是3秒。 unres_qlen 每個沒有被其它網路層解析的地址,在隊列中可存放包的最大數目。預設值是3.
$ /proc/sys/net/core/wmem_max
最大socket寫buffer,可參考的最佳化值:873200
$ /proc/sys/net/core/rmem_max
最大socket讀buffer,可參考的最佳化值:873200
$ /proc/sys/net/ipv4/tcp_wmem
TCP寫buffer,可參考的最佳化值: 8192 436600 873200
$ /proc/sys/net/ipv4/tcp_rmem
TCP讀buffer,可參考的最佳化值: 32768 436600 873200
$
/proc/sys/net/ipv4/tcp_mem
同樣有3個值,意思是:
net.ipv4.tcp_mem[0]:低於此值,TCP沒有記憶體壓力.
net.ipv4.tcp_mem[1]:在此值下,進入記憶體壓力階段.
net.ipv4.tcp_mem[2]:高於此值,TCP拒絕分配socket.
上述記憶體單位是頁,而不是位元組.
可參考的最佳化值是:786432
1048576 1572864
$
/proc/sys/net/core/netdev_max_backlog
進入包的最大裝置隊列.預設是300,對重負載伺服器而言,該值太低,可調整到1000.
$
/proc/sys/net/core/somaxconn
listen()的預設參數,掛起請求的最大數量.預設是128.對繁忙的伺服器,增加該值有助於網路效能.
可調整到256.
$ /proc/sys/net/core/optmem_max
socket buffer的最大初始化值,預設10K.
$
/proc/sys/net/ipv4/tcp_max_syn_backlog
進入SYN包的最大請求隊列.預設1024.對重負載伺服器,增加該值顯然有好處.
可調整到2048.
$
/proc/sys/net/ipv4/tcp_retries2
TCP失敗重傳次數,預設值15,意味著重傳15次才徹底放棄.可減少到5,以儘早釋放核心資源.
$ /proc/sys/net/ipv4/tcp_keepalive_time
$
/proc/sys/net/ipv4/tcp_keepalive_intvl
$
/proc/sys/net/ipv4/tcp_keepalive_probes
這3個參數與TCP KeepAlive有關.預設值是:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes =
9
tcp_keepalive_intvl = 75 seconds
意思是如果某個TCP串連在idle 2個小時後,核心才發起probe.如果probe
9次(每次75秒)不成功,核心才徹底放棄,認為該串連已失效.對伺服器而言,顯然上述值太大. 可調整到:
/proc/sys/net/ipv4/tcp_keepalive_time
1800
/proc/sys/net/ipv4/tcp_keepalive_intvl
30
/proc/sys/net/ipv4/tcp_keepalive_probes 3
$ proc/sys/net/ipv4/ip_local_port_range
指定連接埠範圍的一個配置,預設是32768
61000,已夠大.