Linux核心調優部分引數說明
#接收套接字緩衝區大小的預設值(以位元組為單位)。
net.core.rmem_default = 262144
#接收套接字緩衝區大小的最大值(以位元組為單位)。
net.core.rmem_max = 16777216
#傳送套接字緩衝區大小的預設值(以位元組為單位)。
net.core.wmem_default = 262144
#傳送套接字緩衝區大小的最大值(以位元組為單位)。
net.core.wmem_max = 16777216
#用來限制監聽(LISTEN)佇列最大資料包的數量,超過這個數量就會導致連結超時或者觸發重傳機制。
net.core.somaxconn = 262144
#當網絡卡接收資料包的速度大於核心處理的速度時,會有一個佇列儲存這些資料包。這個引數表示該佇列的最大值。
net.core.netdev_max_backlog = 262144
#表示系統中最多有多少TCP套接字不被關聯到任何一個使用者檔案控制代碼上。如果超過這裡設定的數字,連線就會復位並輸出警告資訊。這個限制僅僅是為了防止簡單的DoS攻擊。此值不能太小。
net.ipv4.tcp_max_orphans = 262144
#表示那些尚未收到客戶端確認資訊的連線(SYN訊息)佇列的長度,預設為1024,加大佇列長度為262144,可以容納更多等待連線的網路連線數。
net.ipv4.tcp_max_syn_backlog = 262144
#表示系統同時保持TIME_WAIT套接字的最大數量。如果超過此數,TIME_WAIT套接字會被立刻清除並且列印警告資訊。之所以要設定這個限制,純粹為了抵禦那些簡單的DoS攻擊,不過,過多的TIME_WAIT套接字也會消耗伺服器資源,甚至宕機。
net.ipv4.tcp_max_tw_buckets = 10000
#表示允許系統開啟的埠範圍。
net.ipv4.ip_local_port_range = 1024 65500
#以下兩引數可解決生產場景中大量連線的伺服器中TIME_WAIT過多問題。
#表示開啟TCP連線中TIME_WAIT套接字的快速回收,預設為0,表示關閉。
net.ipv4.tcp_tw_recycle = 1
#表示允許重用TIME_WAIT狀態的套接字用於新的TCP連線,預設為0,表示關閉。
net.ipv4.tcp_tw_reuse = 1
#當出現SYN等待佇列溢位時,啟用cookies來處理,可防範少量SYN攻擊,預設為0,表示關閉。
net.ipv4.tcp_syncookies = 1
#表示系統允許SYN連線的重試次數。為了開啟對端的連線,核心需要傳送一個SYN並附帶一個迴應前面一個SYN的ACK包。也就是所謂三次握手中的第二次握手。這個設定決定了核心放棄連線之前傳送SYN+ACK包的數量。
net.ipv4.tcp_synack_retries = 1
#表示在核心放棄建立連線之前傳送SYN包的數量。
net.ipv4.tcp_syn_retries = 1
#減少處於FIN-WAIT-2連線狀態的時間,使系統可以處理更多的連線。
net.ipv4.tcp_fin_timeout = 30
#這個引數表示當keepalive啟用時,TCP傳送keepalive訊息的頻度。預設是2小時,若將其設定得小一些,可以更快地清理無效的連線。
net.ipv4.tcp_keepalive_time = 600
#探測訊息未獲得響應時,重發該訊息的間隔時間(秒)。系統預設75秒。
net.ipv4.tcp_keepalive_intvl = 30
#在認定連線失效之前,傳送多少個TCP的keepalive探測包。系統預設值是9。這個值乘以tcp_keepalive_intvl之後決定了,一個連線傳送了keepalive探測包之後可以有多少時間沒有迴應。
net.ipv4.tcp_keepalive_probes = 3
#確定TCP棧應該如何反映記憶體使用,每個值的單位都是記憶體頁(通常是4KB)。第一個值是記憶體使用的下限;第二個值是記憶體壓力模式開始對緩衝區使用應用壓力的上限;第三個值是記憶體使用的上限。在這個層次上可以將報文丟棄,從而減少對記憶體的使用。示例中第一個值為786432*4/1024/1024=3G,第二個值為1048576*4/1024/1024=4G,第三個值為1572864*4/1024/1024=6G。
net.ipv4.tcp_mem = 786432 1048576 1572864
#此引數限制併發未完成的非同步請求數目,應該設定避免I/O子系統故障。
fs.aio-max-nr = 1048576
#該引數決定了系統中所允許的檔案控制代碼最大數目,檔案控制代碼設定代表linux系統中可以開啟的檔案的數量。
fs.file-max = 6815744
#第一列,表示每個訊號集中的最大訊號量數目。
#第二列,表示系統範圍內的最大訊號量總數目。
#第三列,表示每個訊號發生時的最大系統運算元目。
#第四列,表示系統範圍內的最大訊號集總數目。
#(第一列)*(第四列)=(第二列)
kernel.sem = 250 32000 100 128
#表示儘量使用記憶體,減少使用磁碟swap交換分割槽,記憶體速度明顯高於磁碟一個數量級。
vm.swappiness = 0