LINUX之TCP內(nèi)核參數(shù)解析
tcp_abort_on_overflow
0 如果全連接隊(duì)列滿了,server扔掉client發(fā)過(guò)來(lái)的ack; 1 server會(huì)發(fā)送一個(gè)reset包給client,表示廢掉這個(gè)握手過(guò)程和這個(gè)連接
tcp_adv_win_scale
TCP 接收窗口大小的“提前量”(advertised window scaling)Linux 內(nèi)核會(huì)根據(jù)應(yīng)用層 SO_RCVBUF 與內(nèi)核緩沖策略計(jì)算實(shí)際通告的接收窗口 默認(rèn)是 1,表示內(nèi)核實(shí)際對(duì)外通告的窗口比應(yīng)用層設(shè)置的小一些,用于防止 buffer bloat。如果設(shè)太高,可能導(dǎo)致內(nèi)存占用大;設(shè)太低,可能導(dǎo)致吞吐量下降
tcp_allowed_congestion_control
允許使用的擁塞控制算法列表
tcp_app_win
應(yīng)用窗口(application window)的偏移,影響 TCP 接收方的窗口調(diào)整
如果為 0(默認(rèn)),表示應(yīng)用層提供的接收窗口不會(huì)額外減少。
如果大于 0,會(huì)減少實(shí)際通告窗口,避免 buffer 被應(yīng)用層長(zhǎng)期不讀耗盡
tcp_autocorking
是否啟用 autocorking,即內(nèi)核自動(dòng)延遲發(fā)送小包,把多個(gè) write 合并成大包
1(默認(rèn)):開(kāi)啟。可以減少小包數(shù)量,提高效率。
0:關(guān)閉,應(yīng)用 write 時(shí)立即發(fā)包。適合低延遲場(chǎng)景(如游戲)
tcp_available_congestion_control
系統(tǒng)中已編譯并可用的擁塞控制算法列表(和 tcp_allowed_congestion_control 不同,這個(gè)是“所有可用的”)。
tcp_base_mss
TCP 最小的 MSS(Maximum Segment Size)
tcp_challenge_ack_limit
限制每秒鐘內(nèi)核發(fā)送的 challenge ACK 數(shù)量
challenge ACK 是用來(lái)防御 TCP 攻擊(如 RST 注入、ACK flooding)的機(jī)制
tcp_congestion_control
系統(tǒng)當(dāng)前正在使用的擁塞控制算法
tcp_dsack
默認(rèn)開(kāi)啟.控制是否啟用 DSACK(Duplicate Selective Acknowledgment,重復(fù)選擇性確認(rèn)) 功能
tcp_fastopen
默認(rèn)為0不開(kāi)啟。如果開(kāi)啟會(huì)繞過(guò)3次握手,這個(gè)要保證服務(wù)端和客戶端財(cái)時(shí)支持。
tcp_fin_timeout
FIN_WAIT2狀態(tài)下最長(zhǎng)時(shí)間,默認(rèn)60s
tcp_keepalive_intvl
保活機(jī)制檢測(cè)間隔,就是每隔多少秒發(fā)送一個(gè)檢測(cè)報(bào)文
tcp_keepalive_probes
保活檢測(cè)次數(shù),如果檢測(cè)設(shè)置值次數(shù)無(wú)響應(yīng),會(huì)中斷本次連接
tcp_keepalive_time
保活時(shí)間,默認(rèn)7200s,也就是2小時(shí)內(nèi)如果沒(méi)有任何連接的活動(dòng),則會(huì)啟用保活機(jī)制
tcp_max_orphans
孤兒套接字 (orphan socket)上限。如果孤兒 socket 的數(shù)量超過(guò)這個(gè)限制,內(nèi)核會(huì)立即釋放多余的連接
tcp_max_syn_backlog
SYN_RCVD(半連接)狀態(tài)連接的最大個(gè)數(shù),超出處理能力時(shí),對(duì)新的SYN直接回報(bào)RST,丟充連接
tcp_max_tw_buckets
當(dāng)系統(tǒng)中time_wait的數(shù)量超過(guò)此設(shè)置值,系統(tǒng)就會(huì)將后面的time_wait連接狀態(tài)重置
tcp_mtu_probing
主要用于 處理路徑 MTU (PMTU) 探測(cè)問(wèn)題,避免 ICMP 被屏蔽時(shí)的連接中斷 默認(rèn)0,使用固定MSS(mtu-40) 1 遇到黑洞時(shí)啟用 2 使用啟用
tcp_orphan_retries
服務(wù)端超時(shí)重發(fā)fin報(bào)文次數(shù)超過(guò)設(shè)置值,會(huì)關(guān)閉tcp連接
tcp_retries1
當(dāng)重傳次數(shù)超過(guò)retries1就會(huì)指示IP層進(jìn)行MTU探測(cè),刷新路由等過(guò)程,并不會(huì)斷開(kāi)TCP連接
tcp_retries2
當(dāng)重傳次數(shù)超過(guò)retries2就會(huì)斷開(kāi)TCP流,兩個(gè)受一個(gè)TIMEOUT值控制,如果超時(shí)即使次數(shù)沒(méi)達(dá)也不會(huì)重傳。也是TCP建立連接后數(shù)據(jù)包最大重傳次數(shù)。
tcp_moderate_rcvbuf
默認(rèn)1.開(kāi)啟自動(dòng)調(diào)節(jié)接收緩沖區(qū)
tcp_rmem
接收緩沖區(qū)。
tcp_wmem
發(fā)送緩沖區(qū)。
tcp_mem
調(diào)節(jié)內(nèi)存范圍。當(dāng)內(nèi)存小于第1個(gè)值時(shí),不需要自動(dòng)調(diào)節(jié)。在1,2之間時(shí),內(nèi)核開(kāi)啟調(diào)節(jié)接收緩沖區(qū)大小。大于3時(shí),內(nèi)核不再為TCP分配新內(nèi)存,此時(shí)新連接無(wú)法建立
tcp_sack
快速重傳 默認(rèn)開(kāi)啟 1.
tcp_synack_retries
TCP連接第二次握手SYN,ACK重傳次數(shù)
tcp_syncookies
0 關(guān)閉該功能 1 表示僅當(dāng)SYN半連接隊(duì)列放不下時(shí),再啟用 2 表示無(wú)條件開(kāi)啟功能
tcp_syn_retries
限制SYN重傳次數(shù)。當(dāng)網(wǎng)絡(luò)繁忙,不穩(wěn)定時(shí),報(bào)文丟失就會(huì)嚴(yán)重,此時(shí)應(yīng)該調(diào)大重發(fā)次數(shù),反之可以減少重發(fā)次數(shù)
tcp_timestamps
用于記錄TCP發(fā)送方的當(dāng)前時(shí)間戳和從對(duì)端接收到的最新時(shí)間戳
tcp_tw_reuse
只能用于連接的發(fā)起方,開(kāi)啟了該功能,在調(diào)用connect時(shí),內(nèi)核會(huì)隨機(jī)找一個(gè)time_wait狀態(tài)超過(guò)1秒的連接給新的連接使用
tcp_tw_recycle
默認(rèn)0不開(kāi)啟。如果開(kāi)啟,會(huì)加快time_wait的時(shí)間,小于60s,會(huì)造成數(shù)據(jù)錯(cuò)亂。
tcp_early_retrans
早期重傳(Early Retransmit),在擁塞控制丟包前快速重傳丟失包 3(開(kāi)啟) 提高小窗口下的恢復(fù)速度
tcp_ecn
是否啟用 ECN (Explicit Congestion Notification) 顯式擁塞通知 2(開(kāi)啟并協(xié)商) 數(shù)據(jù)中心低丟包網(wǎng)絡(luò)建議開(kāi)啟
tcp_fack
啟用 FACK (Forward Acknowledgement) 算法 1(啟用) 已過(guò)時(shí),CUBIC 默認(rèn)不用它
tcp_fastopen_key
TCP Fast Open (TFO) 的 cookie 密鑰 系統(tǒng)隨機(jī)生成 客戶端/服務(wù)端 0-RTT 建連
tcp_frto
啟用 F-RTO (Forward RTO Recovery),超時(shí)后快速恢復(fù) 2(默認(rèn)啟用) 弱網(wǎng)環(huán)境減少不必要重傳
tcp_invalid_ratelimit
限制對(duì)無(wú)效 TCP 報(bào)文的響應(yīng)速率 500(每秒響應(yīng)數(shù)) 防御 DoS 攻擊
tcp_limit_output_bytes
限制一個(gè) TCP socket 未確認(rèn)數(shù)據(jù)的最大字節(jié)數(shù) 262144(256 KB) 防止單連接過(guò)載占用帶寬
tcp_low_latency
是否優(yōu)先低延遲而非高吞吐 0(關(guān)閉) 開(kāi)啟后 RTT 優(yōu)先,吞吐下降
tcp_max_ssthresh
慢啟動(dòng)閾值的最大值 無(wú)限 控制大流量連接進(jìn)入擁塞避免
tcp_min_snd_mss
最小發(fā)送 MSS 48 防止路徑過(guò)小時(shí)效率過(guò)低
tcp_min_tso_segs
最小 TSO (大包分片) 段數(shù) 2 減少 CPU 中斷,提升吞吐
tcp_no_metrics_save
是否保存歷史路由的 TCP metrics(如 RTT) 0(保存) 設(shè) 1 禁止緩存,避免錯(cuò)誤復(fù)用
tcp_notsent_lowat
控制內(nèi)核緩存里“未發(fā)送數(shù)據(jù)”的最小閾值 -1(無(wú)限制) 大并發(fā)/低延遲優(yōu)化寫發(fā)送行為
tcp_reordering
允許亂序包的最大數(shù)目 3 提高丟包網(wǎng)絡(luò)下的魯棒性
tcp_retrans_collapse
是否合并重傳隊(duì)列里的小包 1(開(kāi)啟) 提升效率,但調(diào)試抓包時(shí)可關(guān)
tcp_rfc1337
防御 TIME-WAIT assassinate 攻擊 0(關(guān)閉) 設(shè) 1 遵循 RFC1337 安全處理
tcp_slow_start_after_idle
空閑后是否重新進(jìn)入慢啟動(dòng) 1(啟用) 長(zhǎng)連接業(yè)務(wù)建議關(guān)掉(設(shè) 0)
tcp_stdurg
是否遵循標(biāo)準(zhǔn)的 URG 標(biāo)志解釋 0(兼容舊棧) 設(shè) 1 嚴(yán)格遵守 RFC
tcp_thin_dupack Thin-stream
(稀疏流) 提前進(jìn)入快速重傳 0(關(guān)閉) VoIP、SSH 等小流量應(yīng)用可開(kāi)
tcp_thin_linear_timeouts
稀疏流使用線性超時(shí)重傳,而非指數(shù)回退 0(關(guān)閉) 降低延遲,適合交互應(yīng)用
tcp_tso_win_divisor
控制 TSO 發(fā)送窗口的分割比例 3 調(diào)小可減小單個(gè)包大小,提高公平性
tcp_window_scaling
啟用 TCP 窗口擴(kuò)展 (RFC 1323) 1(開(kāi)啟) 高帶寬/高延遲鏈路必須開(kāi)
tcp_workaround_signed_windows
兼容某些設(shè)備錯(cuò)誤實(shí)現(xiàn)的 TCP 窗口符號(hào)位
0 如果全連接隊(duì)列滿了,server扔掉client發(fā)過(guò)來(lái)的ack; 1 server會(huì)發(fā)送一個(gè)reset包給client,表示廢掉這個(gè)握手過(guò)程和這個(gè)連接
tcp_adv_win_scale
TCP 接收窗口大小的“提前量”(advertised window scaling)Linux 內(nèi)核會(huì)根據(jù)應(yīng)用層 SO_RCVBUF 與內(nèi)核緩沖策略計(jì)算實(shí)際通告的接收窗口 默認(rèn)是 1,表示內(nèi)核實(shí)際對(duì)外通告的窗口比應(yīng)用層設(shè)置的小一些,用于防止 buffer bloat。如果設(shè)太高,可能導(dǎo)致內(nèi)存占用大;設(shè)太低,可能導(dǎo)致吞吐量下降
tcp_allowed_congestion_control
允許使用的擁塞控制算法列表
tcp_app_win
應(yīng)用窗口(application window)的偏移,影響 TCP 接收方的窗口調(diào)整
如果為 0(默認(rèn)),表示應(yīng)用層提供的接收窗口不會(huì)額外減少。
如果大于 0,會(huì)減少實(shí)際通告窗口,避免 buffer 被應(yīng)用層長(zhǎng)期不讀耗盡
tcp_autocorking
是否啟用 autocorking,即內(nèi)核自動(dòng)延遲發(fā)送小包,把多個(gè) write 合并成大包
1(默認(rèn)):開(kāi)啟。可以減少小包數(shù)量,提高效率。
0:關(guān)閉,應(yīng)用 write 時(shí)立即發(fā)包。適合低延遲場(chǎng)景(如游戲)
tcp_available_congestion_control
系統(tǒng)中已編譯并可用的擁塞控制算法列表(和 tcp_allowed_congestion_control 不同,這個(gè)是“所有可用的”)。
tcp_base_mss
TCP 最小的 MSS(Maximum Segment Size)
tcp_challenge_ack_limit
限制每秒鐘內(nèi)核發(fā)送的 challenge ACK 數(shù)量
challenge ACK 是用來(lái)防御 TCP 攻擊(如 RST 注入、ACK flooding)的機(jī)制
tcp_congestion_control
系統(tǒng)當(dāng)前正在使用的擁塞控制算法
tcp_dsack
默認(rèn)開(kāi)啟.控制是否啟用 DSACK(Duplicate Selective Acknowledgment,重復(fù)選擇性確認(rèn)) 功能
tcp_fastopen
默認(rèn)為0不開(kāi)啟。如果開(kāi)啟會(huì)繞過(guò)3次握手,這個(gè)要保證服務(wù)端和客戶端財(cái)時(shí)支持。
tcp_fin_timeout
FIN_WAIT2狀態(tài)下最長(zhǎng)時(shí)間,默認(rèn)60s
tcp_keepalive_intvl
保活機(jī)制檢測(cè)間隔,就是每隔多少秒發(fā)送一個(gè)檢測(cè)報(bào)文
tcp_keepalive_probes
保活檢測(cè)次數(shù),如果檢測(cè)設(shè)置值次數(shù)無(wú)響應(yīng),會(huì)中斷本次連接
tcp_keepalive_time
保活時(shí)間,默認(rèn)7200s,也就是2小時(shí)內(nèi)如果沒(méi)有任何連接的活動(dòng),則會(huì)啟用保活機(jī)制
tcp_max_orphans
孤兒套接字 (orphan socket)上限。如果孤兒 socket 的數(shù)量超過(guò)這個(gè)限制,內(nèi)核會(huì)立即釋放多余的連接
tcp_max_syn_backlog
SYN_RCVD(半連接)狀態(tài)連接的最大個(gè)數(shù),超出處理能力時(shí),對(duì)新的SYN直接回報(bào)RST,丟充連接
tcp_max_tw_buckets
當(dāng)系統(tǒng)中time_wait的數(shù)量超過(guò)此設(shè)置值,系統(tǒng)就會(huì)將后面的time_wait連接狀態(tài)重置
tcp_mtu_probing
主要用于 處理路徑 MTU (PMTU) 探測(cè)問(wèn)題,避免 ICMP 被屏蔽時(shí)的連接中斷 默認(rèn)0,使用固定MSS(mtu-40) 1 遇到黑洞時(shí)啟用 2 使用啟用
tcp_orphan_retries
服務(wù)端超時(shí)重發(fā)fin報(bào)文次數(shù)超過(guò)設(shè)置值,會(huì)關(guān)閉tcp連接
tcp_retries1
當(dāng)重傳次數(shù)超過(guò)retries1就會(huì)指示IP層進(jìn)行MTU探測(cè),刷新路由等過(guò)程,并不會(huì)斷開(kāi)TCP連接
tcp_retries2
當(dāng)重傳次數(shù)超過(guò)retries2就會(huì)斷開(kāi)TCP流,兩個(gè)受一個(gè)TIMEOUT值控制,如果超時(shí)即使次數(shù)沒(méi)達(dá)也不會(huì)重傳。也是TCP建立連接后數(shù)據(jù)包最大重傳次數(shù)。
tcp_moderate_rcvbuf
默認(rèn)1.開(kāi)啟自動(dòng)調(diào)節(jié)接收緩沖區(qū)
tcp_rmem
接收緩沖區(qū)。
tcp_wmem
發(fā)送緩沖區(qū)。
tcp_mem
調(diào)節(jié)內(nèi)存范圍。當(dāng)內(nèi)存小于第1個(gè)值時(shí),不需要自動(dòng)調(diào)節(jié)。在1,2之間時(shí),內(nèi)核開(kāi)啟調(diào)節(jié)接收緩沖區(qū)大小。大于3時(shí),內(nèi)核不再為TCP分配新內(nèi)存,此時(shí)新連接無(wú)法建立
tcp_sack
快速重傳 默認(rèn)開(kāi)啟 1.
tcp_synack_retries
TCP連接第二次握手SYN,ACK重傳次數(shù)
tcp_syncookies
0 關(guān)閉該功能 1 表示僅當(dāng)SYN半連接隊(duì)列放不下時(shí),再啟用 2 表示無(wú)條件開(kāi)啟功能
tcp_syn_retries
限制SYN重傳次數(shù)。當(dāng)網(wǎng)絡(luò)繁忙,不穩(wěn)定時(shí),報(bào)文丟失就會(huì)嚴(yán)重,此時(shí)應(yīng)該調(diào)大重發(fā)次數(shù),反之可以減少重發(fā)次數(shù)
tcp_timestamps
用于記錄TCP發(fā)送方的當(dāng)前時(shí)間戳和從對(duì)端接收到的最新時(shí)間戳
tcp_tw_reuse
只能用于連接的發(fā)起方,開(kāi)啟了該功能,在調(diào)用connect時(shí),內(nèi)核會(huì)隨機(jī)找一個(gè)time_wait狀態(tài)超過(guò)1秒的連接給新的連接使用
tcp_tw_recycle
默認(rèn)0不開(kāi)啟。如果開(kāi)啟,會(huì)加快time_wait的時(shí)間,小于60s,會(huì)造成數(shù)據(jù)錯(cuò)亂。
tcp_early_retrans
早期重傳(Early Retransmit),在擁塞控制丟包前快速重傳丟失包 3(開(kāi)啟) 提高小窗口下的恢復(fù)速度
tcp_ecn
是否啟用 ECN (Explicit Congestion Notification) 顯式擁塞通知 2(開(kāi)啟并協(xié)商) 數(shù)據(jù)中心低丟包網(wǎng)絡(luò)建議開(kāi)啟
tcp_fack
啟用 FACK (Forward Acknowledgement) 算法 1(啟用) 已過(guò)時(shí),CUBIC 默認(rèn)不用它
tcp_fastopen_key
TCP Fast Open (TFO) 的 cookie 密鑰 系統(tǒng)隨機(jī)生成 客戶端/服務(wù)端 0-RTT 建連
tcp_frto
啟用 F-RTO (Forward RTO Recovery),超時(shí)后快速恢復(fù) 2(默認(rèn)啟用) 弱網(wǎng)環(huán)境減少不必要重傳
tcp_invalid_ratelimit
限制對(duì)無(wú)效 TCP 報(bào)文的響應(yīng)速率 500(每秒響應(yīng)數(shù)) 防御 DoS 攻擊
tcp_limit_output_bytes
限制一個(gè) TCP socket 未確認(rèn)數(shù)據(jù)的最大字節(jié)數(shù) 262144(256 KB) 防止單連接過(guò)載占用帶寬
tcp_low_latency
是否優(yōu)先低延遲而非高吞吐 0(關(guān)閉) 開(kāi)啟后 RTT 優(yōu)先,吞吐下降
tcp_max_ssthresh
慢啟動(dòng)閾值的最大值 無(wú)限 控制大流量連接進(jìn)入擁塞避免
tcp_min_snd_mss
最小發(fā)送 MSS 48 防止路徑過(guò)小時(shí)效率過(guò)低
tcp_min_tso_segs
最小 TSO (大包分片) 段數(shù) 2 減少 CPU 中斷,提升吞吐
tcp_no_metrics_save
是否保存歷史路由的 TCP metrics(如 RTT) 0(保存) 設(shè) 1 禁止緩存,避免錯(cuò)誤復(fù)用
tcp_notsent_lowat
控制內(nèi)核緩存里“未發(fā)送數(shù)據(jù)”的最小閾值 -1(無(wú)限制) 大并發(fā)/低延遲優(yōu)化寫發(fā)送行為
tcp_reordering
允許亂序包的最大數(shù)目 3 提高丟包網(wǎng)絡(luò)下的魯棒性
tcp_retrans_collapse
是否合并重傳隊(duì)列里的小包 1(開(kāi)啟) 提升效率,但調(diào)試抓包時(shí)可關(guān)
tcp_rfc1337
防御 TIME-WAIT assassinate 攻擊 0(關(guān)閉) 設(shè) 1 遵循 RFC1337 安全處理
tcp_slow_start_after_idle
空閑后是否重新進(jìn)入慢啟動(dòng) 1(啟用) 長(zhǎng)連接業(yè)務(wù)建議關(guān)掉(設(shè) 0)
tcp_stdurg
是否遵循標(biāo)準(zhǔn)的 URG 標(biāo)志解釋 0(兼容舊棧) 設(shè) 1 嚴(yán)格遵守 RFC
tcp_thin_dupack Thin-stream
(稀疏流) 提前進(jìn)入快速重傳 0(關(guān)閉) VoIP、SSH 等小流量應(yīng)用可開(kāi)
tcp_thin_linear_timeouts
稀疏流使用線性超時(shí)重傳,而非指數(shù)回退 0(關(guān)閉) 降低延遲,適合交互應(yīng)用
tcp_tso_win_divisor
控制 TSO 發(fā)送窗口的分割比例 3 調(diào)小可減小單個(gè)包大小,提高公平性
tcp_window_scaling
啟用 TCP 窗口擴(kuò)展 (RFC 1323) 1(開(kāi)啟) 高帶寬/高延遲鏈路必須開(kāi)
tcp_workaround_signed_windows
兼容某些設(shè)備錯(cuò)誤實(shí)現(xiàn)的 TCP 窗口符號(hào)位
PHP中常見(jiàn)的問(wèn)題點(diǎn),知識(shí)點(diǎn),及盲點(diǎn)。

浙公網(wǎng)安備 33010602011771號(hào)