優化 tcp/ip 設定 (kuann 版本)
vi /etc/sysctl.conf#使用vi指令編輯sysctl文件設定檔# Kernel sysctl configuration file for Red Hat Linux## For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and# sysctl.conf(5) for more details. # Controls IP packet forwarding#設定ip封包轉發net.ipv4.ip_forward = 0#打開核心的封包轉遞 (IP forward) 功能,0 代表沒有啟動, 1 代表啟動了# Controls source route verification#設定來源路由驗證net.ipv4.conf.default.rp_filter = 1#開啟ipv4反向路徑過濾# Do not accept source routing#不接受來源路由net.ipv4.conf.default.accept_source_route = 0#處理ipv4無來源路由的封包# Controls the System Request debugging functionality of the kernel#設定在kernl中的系統要求除錯功能kernel.sysrq = 0#使用 SysRq 組合鍵安全重啟 Linux 系統,透過 sysrq-trigger 觸發 SysRq 事件,以 SysRq 組合鍵取代 Ctrl + Alt + Backspace 重新啟動 X server# Controls whether core dumps will append the PID to the core filename.#設定核心dumps將會附加到核心檔案名稱中的程序ID(PID)# Useful for debugging multi-threaded applications.#有用的多執行緒功能除錯kernel.core_uses_pid = 1# core_uses_pid可以控制core文件的文件名中是否添加pid作為擴展。#文件內容為1,表示添加pid作為擴展名,生成的core文件格式為core.xxxx;為0則表示生成的core文件同一命名為core。# Controls the use of TCP syncookies#設定使用TCP syncookies,SYN cookie 是一種用於阻止 SYN flood 攻擊的技術,允許伺服器當 SYN 隊列被填滿時避免丟棄連接。#相反,伺服器會表現得像 SYN 隊列擴大了一樣。伺服器會返回適當的 SYN+ACK 響應,但會丟棄 SYN 隊列條目。#如果伺服器接收到客戶端隨後的ACK響應,伺服器能夠使用編碼在 TCP 序號內的信息重構 SYN 隊列條目。net.ipv4.tcp_syncookies = 1#抵禦SYN攻擊# Disable netfilter on bridges.#關閉橋接上的網路過濾net.bridge.bridge-nf-call-ip6tables = 0#設定ipv6的iptables橋接的網路過濾net.bridge.bridge-nf-call-iptables = 0#設定iptables的橋接網路過濾net.bridge.bridge-nf-call-arptables = 0#設定過濾arp封包,防止別的機器對自己進行arp欺騙,又能防止本機病毒或錯誤程序向其他機器發起arp攻擊。# Controls the default maxmimum size of a mesage queue#設定預設最大的訊息佇列大小kernel.msgmnb = 65536#控制預設傳送訊息中的佇列大小,MSGMNB 會影響佇列的大小# MSGMNB 應該增加至 65535# Controls the maximum size of a message, in bytes#設定最大的訊息值,以位元表示kernel.msgmax = 65536# MSGMAX 會影響佇列中可傳送之訊息的大小# MSGMAX 應該變更為 64 KB (亦即 65535 個位元組)# Controls the maximum shared segment size, in bytes#設定最大的共享分段值,以位元表示kernel.shmmax = 68719476736#從 Shared Memory Limits 的第一個區段開始,SHMMAX 與 SHMALL 是需要查看的參數。#SHMMAX 是 Linux 系統上共用記憶體區段的大小上限,而 SHMALL 是系統上共用記憶體頁面的配置上限。#建議將 SHMMAX 值設為等於系統上的實體記憶體數量。#然而,x86 系統的最低需求是 268435456 (256 MB),而在 64 位元的系統中,則為 1073741824 (1 GB)。# Controls the maximum number of shared memory segments, in pages#設定最大的共享記憶體分段在分頁上kernel.shmall = 4294967296# SHMALL 預設會設為 8 GB (8388608 KB = 8 GB)。#如果您的實體記憶體數量大於此值,且將提供給 DB2 使用,則此參數增加至您電腦大約 90% 的實體記憶體。#如果您的電腦系統上有 16 GB 的記憶體主要用於 DB2,則 SHMALL 應設為 3774873#(16 GB 的 90% 是 14.4 GB;14.4 GB 再除以 4 KB,這是基本分頁大小)。#ipcs 輸出已將 SHMALL 轉換成 KB。核心程式需要此值作為分頁數。#如果您未使用預設 SHMALL 設定,則必須另外增加 SHMALL 設定 4 GB。#快速通訊管理程式 (FCM) 的其他緩衝區或通道需要如此增加記憶體。# Use TCP syncookies when needed#使用tcp syncookiesnet.ipv4.tcp_synack_retries=3#降低ipv4的tcp synack重試次數net.ipv4.tcp_syn_retries=3#降低ipv4的tcp syn重試次數net.ipv4.tcp_max_syn_backlog=2048#設定ipv4的tcp 最大syn_backlog長度到2048#虛擬檔案 tcp_synack_retries 顯示或設定 Linux 核心在回應 SYN 要求時會嘗試多少次重新發送初始 SYN,ACK 封包後才決定放棄。#這是所謂的三段交握 (threeway handshake) 的第二個步驟。即是說系統會嘗試多少次去建立由遠端啟始的 TCP 連線。#tcp_synack_retries 的值必須為正整數,並不能超過 255。#因為每一次重新發送封包都會耗費約 30 至 40 秒去等待才決定嘗試下一次重新發送或決定放棄。#tcp_synack_retries 的預設值為 5,即每一個連線要在約 180 秒 (3 分鐘) 後才確定逾時。# Enable TCP window scalingnet.ipv4.tcp_window_scaling = 1#支持更大的TCP窗口. 如果TCP窗口最大超過65535(64K), 必須設置該數值為1 # Increase TCP max buffer size#增加tcp 最大記憶體緩衝值net.core.rmem_max = 16777216#設定接收網路核心記憶體的最大值net.core.wmem_max = 16777216#設定發送網路核心記憶體的最大值# Increase Linux autotuning TCP buffer limits#增加linux 自動調諧tcp 記憶體緩衝限制net.ipv4.tcp_rmem = 4096 87380 16777216#設定TCP讀buffer記憶體,可參考的優化值: 32768 436600 873200net.ipv4.tcp_wmem = 4096 65536 16777216#設定TCP寫buffer記憶體,可參考的優化值: 8192 436600 873200# Increase number of ports available#增加可用的port數量net.ipv4.tcp_fin_timeout = 30#修改系統預設的 TIMEOUT 時間net.ipv4.tcp_keepalive_time = 300#這個參數表示當keepalive 啟用時,tcp 發送keepalive 消息的頻度,預設是2小時。#如果把他設置的小一些,可以更快的清理不正確連接。net.ipv4.tcp_tw_reuse = 1#允許將 TIME-WAIT sockets 重新用於新的 TCP 連接,預設為 0,表示關閉 reuse 功能net.ipv4.tcp_tw_recycle = 1#表示開啟 TCP 連接中 TIME-WAIT sockets 的快速回收,預設為 0net.ipv4.ip_local_port_range = 5000 65000#系統連接伺服器時,會以 5000 和 65000 之間 (包括 5000 和 65000) 作為連線的源連接埠。
留言
張貼留言