TCP IP及核心引數優化調優

2022-06-06 23:48:10 字數 3517 閱讀 3581

inux下tcp/ip及核心引數優化有多種方式,引數配置得當可以大大提高系統的效能,也可以根據特定場景進行專門的優化,如time_wait過高,ddos攻擊等等。

如下配置是寫在sysctl.conf中,可使用sysctl -p生效,

相關引數僅供參考,具體數值還需要根據機器效能,應用場景等實際情況來做更細微調整。

net.core.netdev_max_backlog = 400000

#該引數決定了,網路裝置接收資料報的速率比核心處理這些包的速率快時,允許送到佇列的資料報的最大數目。

net.core.optmem_max = 10000000

#該引數指定了每個套接字所允許的最大緩衝區的大小

net.core.rmem_default = 10000000

#指定了接收套接字緩衝區大小的預設值(以位元組為單位)。

net.core.rmem_max = 10000000

#指定了接收套接字緩衝區大小的最大值(以位元組為單位)。

net.core.somaxconn = 100000

#linux kernel引數,表示socket監聽的backlog(監聽佇列)上限

net.core.wmem_default = 11059200

#定義預設的傳送視窗大小;對於更大的 bdp 來說,這個大小也應該更大。

net.core.wmem_max = 11059200

#定義傳送視窗的最大大小;對於更大的 bdp 來說,這個大小也應該更大。

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

#嚴謹模式 1 (推薦)

#鬆散模式 0

net.ipv4.tcp_congestion_control = bic

#預設推薦設定是 htcp

net.ipv4.tcp_window_scaling = 0

#關閉tcp_window_scaling

#啟用 rfc 1323 定義的 window scaling;要支援超過 64kb 的視窗,必須啟用該值。

net.ipv4.tcp_ecn = 0

#把tcp的直接擁塞通告(tcp_ecn)關掉

net.ipv4.tcp_sack = 1

#關閉tcp_sack

#啟用有選擇的應答(selective acknowledgment),

#這可以通過有選擇地應答亂序接收到的報文來提高效能(這樣可以讓傳送者只傳送丟失的報文段);

#(對於廣域網通訊來說)這個選項應該啟用,但是這會增加對 cpu 的占用。

net.ipv4.tcp_max_tw_buckets = 10000

#表示系統同時保持time_wait套接字的最大數量

net.ipv4.tcp_max_syn_backlog = 8192

#表示syn佇列長度,預設1024,改成8192,可以容納更多等待連線的網路連線數。

net.ipv4.tcp_syncookies = 1

#表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊,預設為0,表示關閉;

net.ipv4.tcp_timestamps = 1

#開啟tcp時間戳

#以一種比重發超時更精確的方法(請參閱 rfc 1323)來啟用對 rtt 的計算;為了實現更好的效能應該啟用這個選項。

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 = 10

#表示如果套接字由本端要求關閉,這個引數決定了它保持在fin-wait-2狀態的時間。

net.ipv4.tcp_keepalive_time = 1800

#表示當keepalive起用的時候,tcp傳送keepalive訊息的頻度。預設是2小時,改為30分鐘。

net.ipv4.tcp_keepalive_probes = 3

#如果對方不予應答,探測包的傳送次數

net.ipv4.tcp_keepalive_intvl = 15

#keepalive探測包的傳送間隔

net.ipv4.tcp_mem

#確定 tcp 棧應該如何反映記憶體使用;每個值的單位都是記憶體頁(通常是 4kb)。

#第乙個值是記憶體使用的下限。

#第二個值是記憶體壓力模式開始對緩衝區使用應用壓力的上限。

#第三個值是記憶體上限。在這個層次上可以將報文丟棄,從而減少對記憶體的使用。對於較大的 bdp 可以增大這些值(但是要記住,其單位是記憶體頁,而不是位元組)。

net.ipv4.tcp_rmem

#與 tcp_wmem 類似,不過它表示的是為自動調優所使用的接收緩衝區的值。

net.ipv4.tcp_wmem = 30000000 30000000 30000000

#為自動調優定義每個 socket 使用的記憶體。

#第乙個值是為 socket 的傳送緩衝區分配的最少位元組數。

#第二個值是預設值(該值會被 wmem_default 覆蓋),緩衝區在系統負載不重的情況下可以增長到這個值。

#第三個值是傳送緩衝區空間的最大位元組數(該值會被 wmem_max 覆蓋)。

net.ipv4.ip_local_port_range = 1024 65000

#表示用於向外連線的埠範圍。預設情況下很小:32768到61000,改為1024到65000。

net.ipv4.netfilter.ip_conntrack_max=204800

#設定系統對最大跟蹤的tcp連線數的限制

net.ipv4.tcp_slow_start_after_idle = 0

#關閉tcp的連線傳輸的慢啟動,即先休止一段時間,再初始化擁塞視窗。

net.ipv4.route.gc_timeout = 100

#路由快取重新整理頻率,當乙個路由失敗後多長時間跳到另乙個路由,預設是300。

net.ipv4.tcp_syn_retries = 1

#在核心放棄建立連線之前傳送syn包的數量。

net.ipv4.icmp_echo_ignore_broadcasts = 1

# 避免放大攻擊

net.ipv4.icmp_ignore_bogus_error_responses = 1

# 開啟惡意icmp錯誤訊息保護

net.inet.udp.checksum=1

#防止不正確的udp包的攻擊

net.ipv4.conf.default.accept_source_route = 0

#是否接受含有源路由資訊的ip包。引數值為布林值,1表示接受,0表示不接受。

#在充當閘道器的linux主機上預設值為1,在一般的linux主機上預設值為0。

#從安全性角度出發,建議你關閉該功能。

TCP IP及核心引數優化調優

linux下tcp ip及核心引數優化有多種方式,引數配置得當可以大大提高系統的效能,也可以根據特定場景進行專門的優化,如time wait過高,ddos攻擊等等。如下配置是寫在sysctl.conf中,可使用sysctl p生效,相關引數僅供參考,具體數值還需要根據機器效能,應用場景等實際情況來做...

Linux核心 修改TCP IP調優引數

所有的tcp ip調優引數都位於 proc sys net 目錄.例如,下面是最重要的一些調優引數,後面是它們的含義 1.proc sys net core rmem max 最大的tcp資料接收緩衝 2.proc sys net core wmem max 最大的tcp資料傳送緩衝 3.proc ...

Linux核心 修改TCP IP調優引數

所有的tcp ip調優引數都位於 proc sys net 目錄.例如,下面是最重要的一些調優引數,後面是它們的含義 1.proc sys net core rmem max 最大的tcp資料接收緩衝 2.proc sys net core wmem max 最大的tcp資料傳送緩衝 3.proc ...