Linux實例常用內(nèi)核網(wǎng)絡(luò)參數(shù)介紹與常見問題處理

概述

本文主要介紹常見的Linux內(nèi)核參數(shù)及相關(guān)問題的處理蝉揍。

詳細信息

本文主要介紹如下幾點內(nèi)容,您可以根據(jù)實際需要選擇劲阎。

查看和修改Linux實例內(nèi)核參數(shù)

在修改內(nèi)核參數(shù)前忠售,需要注意以下幾點。

  • 從實際需求出發(fā)记盒,盡量有相關(guān)數(shù)據(jù)的支撐,不建議隨意調(diào)整內(nèi)核參數(shù)外傅。
  • 了解參數(shù)的具體作用纪吮,需注意同類型或版本的環(huán)境中,內(nèi)核參數(shù)可能有所不同萎胰。
  • 備份ECS實例中的重要數(shù)據(jù)碾盟。關(guān)于如何備份數(shù)據(jù)請參見創(chuàng)建快照

本文提供以下兩種修改Linux實例內(nèi)核參數(shù)的方法技竟。

方法一:通過/proc/sys/目錄查看和修改內(nèi)核參數(shù)

/proc/sys/目錄是Linux內(nèi)核在啟動后生成的偽目錄冰肴,其目錄下的net文件夾中存放了當前系統(tǒng)中開啟的所有內(nèi)核參數(shù),目錄樹結(jié)構(gòu)與參數(shù)的完整名稱相關(guān),如net.ipv4.tcp_tw_recycle嚼沿,它對應(yīng)的文件是/proc/sys/net/ipv4/tcp_tw_recycle文件估盘,文件的內(nèi)容就是參數(shù)值瓷患。方法一修改的參數(shù)值僅在當前運行中生效骡尽,系統(tǒng)重啟后會回滾到歷史值,一般用于臨時性驗證修改的效果擅编。若需要永久性修改攀细,請參考方法二

  • 查看內(nèi)核參數(shù):使用cat命令查看對應(yīng)文件的內(nèi)容爱态,執(zhí)行如下命令谭贪,查看net.ipv4.tcp_tw_recycle的值。
cat /proc/sys/net/ipv4/tcp_tw_recycle
  • 修改內(nèi)核參數(shù):使用echo命令修改內(nèi)核參數(shù)對應(yīng)的文件锦担,執(zhí)行如下命令俭识,將net.ipv4.tcp_tw_recycle的值修改為0。
echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle

方法二:通過sysctl.conf文件查看和修改內(nèi)核參數(shù)

  • 查看內(nèi)核參數(shù):執(zhí)行sysctl -a命令洞渔,查看當前系統(tǒng)中生效的所有參數(shù)套媚,系統(tǒng)顯示類似如下。
    net.ipv4.tcp_app_win = 31
    net.ipv4.tcp_adv_win_scale = 2
    net.ipv4.tcp_tw_reuse = 0
    net.ipv4.tcp_frto = 2
    net.ipv4.tcp_frto_response = 0
    net.ipv4.tcp_low_latency = 0
    net.ipv4.tcp_no_metrics_save = 0
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_tso_win_divisor = 3
    net.ipv4.tcp_congestion_control = cubic
    net.ipv4.tcp_abc = 0
    net.ipv4.tcp_mtu_probing = 0
    net.ipv4.tcp_base_mss = 512
    net.ipv4.tcp_workaround_signed_windows = 0
    net.ipv4.tcp_challenge_ack_limit = 1000
    net.ipv4.tcp_limit_output_bytes = 262144
    net.ipv4.tcp_dma_copybreak = 4096
    net.ipv4.tcp_slow_start_after_idle = 1
    net.ipv4.cipso_cache_enable = 1
    net.ipv4.cipso_cache_bucket_size = 10
    net.ipv4.cipso_rbm_optfmt = 0
    net.ipv4.cipso_rbm_strictvalid = 1
  • 通過以下兩種方式磁椒,修改內(nèi)核參數(shù)堤瘤。

    注:調(diào)整內(nèi)核參數(shù)后,內(nèi)核處于不穩(wěn)定狀態(tài)浆熔,請務(wù)必重啟實例本辐。

  • 執(zhí)行如下命令,臨時修改內(nèi)核參數(shù)医增。 /sbin/sysctl -w kernel.parameter="[$Example]"

    注:[$Example]為參數(shù)值慎皱,如sysctl -w net.ipv4.tcp_tw_recycle="0"命令,將參數(shù)值改為0叶骨。

  • 通過修改配置文件的方式修改內(nèi)核參數(shù)茫多。

    1. 執(zhí)行如下命令,修改/etc/sysctl.conf文件中的參數(shù)邓萨。
      vi /etc/sysctl.conf
    2. 執(zhí)行如下命令地梨,使配置生效。
      /sbin/sysctl -p

Linux網(wǎng)絡(luò)相關(guān)內(nèi)核參數(shù)引發(fā)的常見問題及處理

Linux網(wǎng)絡(luò)相關(guān)內(nèi)核參數(shù)引發(fā)的常見問題主要包括以下幾種缔恳。

| 問題一:Linux實例NAT哈希表滿導(dǎo)致ECS實例丟包 | 問題二:報“Time wait bucket table overflow”錯誤 |
| 問題三:Linux實例中FIN_WAIT2狀態(tài)的TCP鏈接過多 | 問題四:Linux實例中出現(xiàn)大量CLOSE_WAIT狀態(tài)的TCP連接 |
| 問題五:客戶端配置NAT后仍無法訪問ECS或RDS遠端服務(wù)器 | 問題六:存在大量處于TIME_WAIT狀態(tài)的連接 |
| 問題七:服務(wù)端斷開連接后客戶端仍然可以看到是建立連接的 | 問題八:無法在本地網(wǎng)絡(luò)環(huán)境通過SSH連接Linux實例 |

問題一:Linux實例NAT哈希表滿導(dǎo)致ECS實例丟包

提示:此處涉及的內(nèi)核參數(shù)如下宝剖。

  • net.netfilter.nf_conntrack_buckets

  • net.nf_conntrack_max

問題現(xiàn)象

Linux實例出現(xiàn)間歇性丟包,無法連接實例歉甚。請參考ping 丟包或不通時鏈路測試說明万细,通過tracert、mtr等工具排查,外部網(wǎng)絡(luò)未見異常赖钞。同時腰素,在系統(tǒng)日志中重復(fù)出現(xiàn)大量類似如下錯誤信息。

Feb  6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet.
Feb  6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet.
Feb  6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet.
Feb  6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet.
原因分析

ip_conntrack是Linux系統(tǒng)內(nèi)NAT的一個跟蹤連接條目的模塊雪营。ip_conntrack模塊會使用一個哈希表記錄TCP協(xié)議“established connection”記錄弓千,當這個哈希表滿之后,便會導(dǎo)致“nf_conntrack: table full, dropping packet”錯誤献起。Linux系統(tǒng)會開辟一個空間洋访,用于維護每一個TCP鏈接,這個空間的大小與nf_conntrack_buckets谴餐、nf_conntrack_maxca參數(shù)相關(guān)姻政,后者的默認值是前者的4倍,所以一般建議調(diào)大nf_conntrack_maxca參數(shù)值岂嗓。

注:系統(tǒng)維護連接比較消耗內(nèi)存汁展,請在系統(tǒng)空閑和內(nèi)存充足的情況下調(diào)大nf_conntrack_maxca參數(shù),且根據(jù)系統(tǒng)的情況而定厌殉。

解決方法
  1. 登錄Linux實例食绿,如何登錄Linux實例請參見使用管理終端連接Linux實例
  2. 執(zhí)行如下命令年枕,編輯系統(tǒng)內(nèi)核配置炫欺。
vi /etc/sysctl.conf
  1. 修改哈希表項最大值參數(shù)net.netfilter.nf_conntrack_max655350
  2. 修改超時參數(shù)net.netfilter.nf_conntrack_tcp_timeout_established1200熏兄,默認情況下超時時間是432000秒品洛。
  3. 執(zhí)行sysctl -p命令,使配置生效摩桶。

問題二:報“Time wait bucket table overflow”錯誤

提示:此處涉及的內(nèi)核參數(shù)為net.ipv4.tcp_max_tw_buckets桥状。

問題現(xiàn)象
  • Linux實例的/var/log/message日志信息全是類似“kernel: TCP: time wait bucket table overflow”的報錯信息,提示“time wait bucket table”溢出硝清,系統(tǒng)顯示類似如下辅斟。
 Feb 18 12:28:38 i-*** kernel: TCP: time wait bucket table overflow
 Feb 18 12:28:44 i-*** kernel: printk: 227 messages suppressed.
 Feb 18 12:28:44 i-*** kernel: TCP: time wait bucket table overflow
 Feb 18 12:28:52 i-*** kernel: printk: 121 messages suppressed.
 Feb 18 12:28:52 i-*** kernel: TCP: time wait bucket table overflow
 Feb 18 12:28:53 i-*** kernel: printk: 351 messages suppressed.
 Feb 18 12:28:53 i-*** kernel: TCP: time wait bucket table overflow
 Feb 18 12:28:59 i-*** kernel: printk: 319 messages suppressed.
  • 執(zhí)行如下命令谅年,統(tǒng)計處于TIME_WAIT狀態(tài)的TCP連接數(shù)嫌变,發(fā)現(xiàn)處于TIME_WAIT狀態(tài)的TCP連接非常多尖淘。
netstat -ant|grep TIME_WAIT|wc -l
原因分析

參數(shù)net.ipv4.tcp_max_tw_buckets可以調(diào)整內(nèi)核中管理TIME_WAIT狀態(tài)的數(shù)量愕提。當實例中處于TIME_WAIT狀態(tài),及需要轉(zhuǎn)換為TIME_WAIT狀態(tài)的連接數(shù)之和超過net.ipv4.tcp_max_tw_buckets參數(shù)值時逐哈,message日志中將報“time wait bucket table” 錯誤促绵,同時內(nèi)核關(guān)閉超出參數(shù)值的部分TCP連接缓艳。您需要根據(jù)實際情況適當調(diào)高net.ipv4.tcp_max_tw_buckets參數(shù)缓苛,同時從業(yè)務(wù)層面去改進TCP連接芳撒。

解決方法
  1. 執(zhí)行如下命令,統(tǒng)計TCP連接數(shù)。
netstat -anp |grep tcp |wc -l
  1. 執(zhí)行如下命令笔刹,查詢net.ipv4.tcp_max_tw_buckets參數(shù)芥备。如果確認連接使用很高,則容易超出限制舌菜。
vi /etc/sysctl.conf
  1. 根據(jù)現(xiàn)場情況萌壳,增加net.ipv4.tcp_max_tw_buckets參數(shù)值的大小。

  2. 執(zhí)行sysctl -p命令酷师,使配置生效讶凉。

問題三:Linux實例中FIN_WAIT2狀態(tài)的TCP鏈接過多

提示:此處涉及的內(nèi)核參數(shù)為net.ipv4.tcp_fin_timeout

問題現(xiàn)象

FIN_WAIT2狀態(tài)的TCP鏈接過多山孔。

原因分析
  • 在HTTP服務(wù)中,Server由于某種原因會主動關(guān)閉連接荷憋,例如KEEPALIVE超時的情況下台颠。作為主動關(guān)閉連接的Server就會進入FIN_WAIT2狀態(tài)。
  • 在TCP/IP協(xié)議棧中勒庄,存在半連接的概念串前,F(xiàn)IN_WAIT2狀態(tài)不算超時,如果Client不關(guān)閉实蔽,F(xiàn)IN_WAIT2狀態(tài)將保持到系統(tǒng)重啟荡碾,越來越多的FIN_WAIT2狀態(tài)會致使內(nèi)核Crash。
  • 建議調(diào)小net.ipv4.tcp_fin_timeout參數(shù)的值局装,以便加快系統(tǒng)關(guān)閉處于FIN_WAIT2狀態(tài)的TCP連接坛吁。
解決方法
  1. 執(zhí)行vi /etc/sysctl.conf命令,修改或增加以下內(nèi)容铐尚。
 net.ipv4.tcp_syncookies = 1
 net.ipv4.tcp_fin_timeout = 30
 net.ipv4.tcp_max_syn_backlog = 8192
 net.ipv4.tcp_max_tw_buckets = 5000
  1. 執(zhí)行sysctl -p命令拨脉,使配置生效。

    注:由于FIN_WAIT2狀態(tài)的TCP連接會進入TIME_WAIT狀態(tài)宣增,請同時參考問題二:報“Time wait bucket table overflow”錯誤玫膀。

問題四:Linux實例中出現(xiàn)大量CLOSE_WAIT狀態(tài)的TCP連接

問題現(xiàn)象

執(zhí)行如下命令,發(fā)現(xiàn)當前系統(tǒng)中處于CLOSE_WAIT狀態(tài)的TCP連接非常多爹脾。

netstat -atn|grep CLOSE_WAIT|wc -l
原因分析

根據(jù)實例上的業(yè)務(wù)量判斷CLOSE_WAIT數(shù)量是否超出了正常的范圍帖旨。TCP連接斷開時需要進行四次揮手,TCP連接的兩端都可以發(fā)起關(guān)閉連接的請求灵妨,若對端發(fā)起了關(guān)閉連接解阅,但本地沒有關(guān)閉連接,那么該連接就會處于CLOSE_WAIT狀態(tài)闷串。雖然該連接已經(jīng)處于半開狀態(tài)瓮钥,但是已經(jīng)無法和對端通信,需要及時的釋放該連接。建議從業(yè)務(wù)層面及時判斷某個連接是否已經(jīng)被對端關(guān)閉碉熄,即在程序邏輯中對連接及時關(guān)閉桨武,并進行檢查。

解決方法

編程語言中對應(yīng)的讀锈津、寫函數(shù)一般包含了檢測CLOSE_WAIT狀態(tài)的TCP連接功能呀酸,可通過執(zhí)行如下命令,查看當前實例上處于CLOSE_WAIT狀態(tài)的連接數(shù)琼梆。Java語言和C語言中關(guān)閉連接的方法如下性誉。

netstat -an|grep CLOSE_WAIT|wc -l

Java語言

  1. 通過read方法來判斷I/O 。當read方法返回-1時茎杂,則表示已經(jīng)到達末尾错览。
  2. 通過close方法關(guān)閉該鏈接。

C語言

檢查read的返回值煌往。

  • 若等于0倾哺,則可以關(guān)閉該連接。
  • 若小于0刽脖,則查看error羞海,若不是AGAIN,則同樣可以關(guān)閉連接曲管。

問題五:客戶端配置NAT后仍無法訪問ECS或RDS遠端服務(wù)器

提示:此處涉及的內(nèi)核參數(shù)如下却邓。

  • net.ipv4.tcp_tw_recycle
  • net.ipv4.tcp_timestamps
問題現(xiàn)象

客戶端配置NAT后無法訪問遠端ECS、RDS院水,包括配置了SNAT的VPC中的ECS實例腊徙。同時無法訪問其他ECS或RDS等云產(chǎn)品,抓包檢測發(fā)現(xiàn)遠端ECS和RDS對客戶端發(fā)送的SYN包沒有響應(yīng)衙耕。

原因分析

若遠端服務(wù)器的內(nèi)核參數(shù)net.ipv4.tcp_tw_recyclenet.ipv4.tcp_timestamps的值都為1昧穿,則遠端服務(wù)器會檢查每一個報文中的時間戳(Timestamp),若Timestamp不是遞增的關(guān)系橙喘,不會響應(yīng)這個報文时鸵。配置NAT后,遠端服務(wù)器看到來自不同客戶端的源IP相同厅瞎,但NAT前每一臺客戶端的時間可能會有偏差饰潜,報文中的Timestamp就不是遞增的情況。

解決方法
  • 遠端服務(wù)器為ECS時和簸,修改net.ipv4.tcp_tw_recycle參數(shù)為0彭雾。
  • 遠端服務(wù)器為RDS等PaaS服務(wù)時。RDS無法直接修改內(nèi)核參數(shù)锁保,需要在客戶端上修改net.ipv4.tcp_tw_recycle參數(shù)和net.ipv4.tcp_timestamps參數(shù)為0薯酝。

問題六:存在大量處于TIME_WAIT狀態(tài)的連接

提示:此處涉及的內(nèi)核參數(shù)如下半沽。

  • net.ipv4.tcp_syncookies
  • net.ipv4.tcp_tw_reuse
  • net.ipv4.tcp_tw_recycle
  • net.ipv4.tcp_fin_timeout
問題現(xiàn)象

云服務(wù)器中存在大量處于TIME_WAIT狀態(tài)的連接。

原因分析

首先通過調(diào)用close()發(fā)起主動關(guān)閉吴菠,在發(fā)送最后一個ACK之后會進入time_wait的狀態(tài)者填,該發(fā)送方會保持2MSL時間之后才會回到初始狀態(tài)。MSL值是數(shù)據(jù)包在網(wǎng)絡(luò)中的最大生存時間做葵。產(chǎn)生這種結(jié)果使得這個TCP連接在2MSL連接等待期間占哟,定義這個連接的四元組(客戶端IP地址和端口,服務(wù)端IP地址和端口號)不能被使用酿矢。

解決方法

通過netstat或ss命令榨乎,可以看到大量處于TIME_WAIT狀態(tài)的連接。

  1. 執(zhí)行如下命令瘫筐,查看TIME_WAIT狀態(tài)的連接數(shù)量蜜暑。
netstat -n | awk ‘/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}’
  1. 執(zhí)行如下命令,編輯系統(tǒng)內(nèi)核配置严肪。
vi /etc/sysctl.conf

修改或加入以下內(nèi)容史煎。

    net.ipv4.tcp_syncookies = 1 
    net.ipv4.tcp_tw_reuse = 1 
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
  1. 執(zhí)行命令如下命令,使配置生效驳糯。
/sbin/sysctl -p

問題七:服務(wù)端斷開連接后客戶端仍然可以看到是建立連接的

提示:此處涉及的內(nèi)核參數(shù)為net.ipv4.tcp_fin_timeout

問題現(xiàn)象

服務(wù)端A與客戶端B建立了TCP連接氢橙,之后服務(wù)端A主動斷開了連接酝枢,但是在客戶端B上仍然看到連接是建立的。

原因分析

通常是由于修改了服務(wù)端默認的net.ipv4.tcp_fin_timeout內(nèi)核參數(shù)所致悍手。

解決方法
  1. 執(zhí)行如下命令帘睦,修改配置,設(shè)置net.ipv4.tcp_fin_timeout=30坦康。
vi /etc/sysctl.conf
  1. 執(zhí)行如下命令竣付,使配置生效。
sysctl -p

問題八:無法在本地網(wǎng)絡(luò)環(huán)境通過SSH連接Linux實例

提示:此處涉及的內(nèi)核參數(shù)如下滞欠。

  • net.ipv4.tcp_tw_recycle
  • net.ipv4.tcp_timestamps
問題現(xiàn)象

無法在本地網(wǎng)絡(luò)環(huán)境通過SSH連接Linux實例古胆,或者訪問該Linux實例上的HTTP業(yè)務(wù)出現(xiàn)異常。Telnet測試會被reset筛璧。

原因分析

如果您的本地網(wǎng)絡(luò)是NAT共享方式上網(wǎng)逸绎,該問題可能是由于本地NAT環(huán)境和目標Linux相關(guān)內(nèi)核參數(shù)配置不匹配導(dǎo)致。嘗試通過修改目標Linux實例內(nèi)核參數(shù)來解決問題夭谤。

  1. 遠程連接目標Linux實例棺牧。
  2. 執(zhí)行如下命令,查看當前配置朗儒。
   cat /proc/sys/net/ipv4/tcp_tw_recycle
    cat /proc/sys/net/ipv4/tcp_timestamps
  1. 查看上述兩個配置的值是否為 0颊乘,如果為 1参淹,NAT環(huán)境下的請求可能會導(dǎo)致上述問題。
解決方法

通過如下方式將上述參數(shù)值修改為0乏悄。

  1. 執(zhí)行如下命令浙值,修改配置文件。
vi /etc/sysctl.conf
  1. 添加如下內(nèi)容纲爸。
    net.ipv4.tcp_tw_recycle=0
    net.ipv4.tcp_timestamps=0
  1. 執(zhí)行如下命令亥鸠,使配置生效。
sysctl -p
  1. 重新SSH登錄實例识啦,或者進行業(yè)務(wù)訪問測試负蚊。

文檔涉及的Linux內(nèi)核參數(shù)說明

文檔涉及的Linux內(nèi)核參數(shù)說明如下,可參考如下參數(shù)說明進行相關(guān)操作颓哮。

參數(shù) 描述
net.core.rmem_default 默認的TCP數(shù)據(jù)接收窗口大屑易薄(字節(jié))。
net.core.rmem_max 最大的TCP數(shù)據(jù)接收窗口(字節(jié))冕茅。
net.core.wmem_default 默認的TCP數(shù)據(jù)發(fā)送窗口大猩思(字節(jié))。
net.core.wmem_max 最大的TCP數(shù)據(jù)發(fā)送窗口(字節(jié))姨伤。
net.core.netdev_max_backlog 當內(nèi)核處理速度比網(wǎng)卡接收速度慢時哨坪,這部分多出來的包就會被保存在網(wǎng)卡的接收隊列上,而該參數(shù)說明了這個隊列的數(shù)量上限乍楚。在每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時当编,允許送到隊列的數(shù)據(jù)包的最大數(shù)目。
net.core.somaxconn 該參數(shù)定義了系統(tǒng)中每一個端口最大的監(jiān)聽隊列的長度徒溪,是個全局參數(shù)忿偷。該參數(shù)和net.ipv4.tcp_max_syn_backlog有關(guān)聯(lián),后者指的是還在三次握手的半連接的上限臊泌,該參數(shù)指的是處于ESTABLISHED的數(shù)量上限鲤桥。若您的ECS實例業(yè)務(wù)負載很高,則有必要調(diào)高該參數(shù)渠概。listen(2)函數(shù)中的參數(shù)backlog 同樣是指明監(jiān)聽的端口處于ESTABLISHED的數(shù)量上限茶凳,當backlog大于net.core.somaxconn時,以net.core.somaxconn參數(shù)為準高氮。
net.core.optmem_max 表示每個套接字所允許的最大緩沖區(qū)的大小慧妄。
net.ipv4.tcp_mem 確定TCP棧應(yīng)該如何反映內(nèi)存使用,每個值的單位都是內(nèi)存頁(通常是4KB)剪芍。第一個值是內(nèi)存使用的下限塞淹。第二個值是內(nèi)存壓力模式開始對緩沖區(qū)使用應(yīng)用壓力的上限。第三個值是內(nèi)存使用的上限罪裹。在這個層次上可以將報文丟棄饱普,從而減少對內(nèi)存的使用运挫。對于較大的BDP可以增大這些值(注:其單位是內(nèi)存頁而不是字節(jié))。
net.ipv4.tcp_rmem 為自動調(diào)優(yōu)定義Socket使用的內(nèi)存套耕。第一個值是為Socket接收緩沖區(qū)分配的最少字節(jié)數(shù)谁帕。第二個值是默認值(該值會被rmem_default覆蓋),緩沖區(qū)在系統(tǒng)負載不重的情況下可以增長到這個值冯袍。第三個值是接收緩沖區(qū)空間的最大字節(jié)數(shù)(該值會被rmem_max覆蓋)匈挖。
net.ipv4.tcp_wmem 為自動調(diào)優(yōu)定義Socket使用的內(nèi)存。第一個值是為Socket發(fā)送緩沖區(qū)分配的最少字節(jié)數(shù)康愤。第二個值是默認值(該值會被wmem_default覆蓋)儡循,緩沖區(qū)在系統(tǒng)負載不重的情況下可以增長到這個值。
第三個值是發(fā)送緩沖區(qū)空間的最大字節(jié)數(shù)(該值會被wmem_max覆蓋)征冷。
net.ipv4.tcp_keepalive_time TCP發(fā)送keepalive探測消息的間隔時間(秒)择膝,用于確認TCP連接是否有效。
net.ipv4.tcp_keepalive_intvl 探測消息未獲得響應(yīng)時检激,重發(fā)該消息的間隔時間(秒)肴捉。
net.ipv4.tcp_keepalive_probes 在認定TCP連接失效之前,最多發(fā)送多少個keepalive探測消息叔收。
net.ipv4.tcp_sack 啟用有選擇的應(yīng)答(1表示啟用)齿穗,通過有選擇地應(yīng)答亂序接收到的報文來提高性能,讓發(fā)送者只發(fā)送丟失的報文段饺律,(對于廣域網(wǎng)通信來說)這個選項應(yīng)該啟用缤灵,但是會增加對CPU的占用。
net.ipv4.tcp_fack 啟用轉(zhuǎn)發(fā)應(yīng)答蓝晒,可以進行有選擇應(yīng)答(SACK)從而減少擁塞情況的發(fā)生,這個選項也應(yīng)該啟用帖鸦。
net.ipv4.tcp_timestamps TCP時間戳(會在TCP包頭增加12B)芝薇,以一種比重發(fā)超時更精確的方法(參考RFC 1323)來啟用對RTT的計算,為實現(xiàn)更好的性能應(yīng)該啟用這個選項作儿。
net.ipv4.tcp_window_scaling 啟用RFC 1323定義的window scaling洛二,要支持超過64KB的TCP窗口,必須啟用該值(1表示啟用)攻锰,TCP窗口最大至1GB晾嘶,TCP連接雙方都啟用時才生效。
net.ipv4.tcp_syncookies 該參數(shù)表示是否打開TCP同步標簽(SYN_COOKIES)娶吞,內(nèi)核必須開啟并編譯CONFIG_SYN_COOKIES垒迂,SYN_COOKIES可以防止一個套接字在有過多試圖連接到達時,引起過載妒蛇。默認值0表示關(guān)閉机断。當該參數(shù)被設(shè)置為1楷拳,且SYN_RECV隊列滿了之后,內(nèi)核會對SYN包的回復(fù)做一定的修改吏奸,即在響應(yīng)的SYN+ACK包中欢揖,初始的序列號是由源IP+Port、目的IP+Port及時間這五個參數(shù)共同計算出一個值組成精心組裝的TCP包奋蔚。由于ACK包中確認的序列號并不是之前計算出的值她混,惡意攻擊者無法響應(yīng)或誤判,而請求者會根據(jù)收到的SYN+ACK包做正確的響應(yīng)泊碑。啟用net.ipv4.tcp_syncookies后坤按,會忽略net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_tw_reuse 表示是否允許將處于TIME-WAIT狀態(tài)的Socket(TIME-WAIT的端口)用于新的TCP連接蛾狗。
net.ipv4.tcp_tw_recycle 能夠更快地回收TIME-WAIT套接字晋涣。
net.ipv4.tcp_fin_timeout 對于本端斷開的Socket連接,TCP保持在FIN-WAIT-2狀態(tài)的時間(秒)沉桌。對方可能會斷開連接或一直不結(jié)束連接或不可預(yù)料的進程死亡谢鹊。
net.ipv4.ip_local_port_range 表示TCP/UDP協(xié)議允許使用的本地端口號。
net.ipv4.tcp_max_syn_backlog 該參數(shù)決定了系統(tǒng)中處于SYN_RECV狀態(tài)的TCP連接數(shù)量留凭。SYN_RECV狀態(tài)指的是當系統(tǒng)收到SYN后佃扼,作為SYN+ACK響應(yīng)后等待對方回復(fù)三次握手階段中的最后一個ACK的階段。對于還未獲得對方確認的連接請求蔼夜,可保存在隊列中的最大數(shù)目兼耀。如果服務(wù)器經(jīng)常出現(xiàn)過載,可以嘗試增加這個數(shù)字求冷。默認為1024瘤运。
net.ipv4.tcp_low_latency 允許TCP/IP棧適應(yīng)在高吞吐量情況下低延時的情況,這個選項應(yīng)該禁用匠题。
net.ipv4.tcp_westwood 啟用發(fā)送者端的擁塞控制算法拯坟,它可以維護對吞吐量的評估,并試圖對帶寬的整體利用情況進行優(yōu)化韭山,對于WAN通信來說應(yīng)該啟用這個選項郁季。
net.ipv4.tcp_bic 為快速長距離網(wǎng)絡(luò)啟用Binary Increase Congestion,這樣可以更好地利用以GB速度進行操作的鏈接钱磅,對于WAN通信應(yīng)該啟用這個選項梦裂。
net.ipv4.tcp_max_tw_buckets 該參數(shù)設(shè)置系統(tǒng)的TIME_WAIT的數(shù)量,如果超過默認值則會被立即清除盖淡。默認為180000年柠。
net.ipv4.tcp_synack_retries 指明了處于SYN_RECV狀態(tài)時重傳SYN+ACK包的次數(shù)。
net.ipv4.tcp_abort_on_overflow 設(shè)置該參數(shù)為1時禁舷,當系統(tǒng)在短時間內(nèi)收到了大量的請求彪杉,而相關(guān)的應(yīng)用程序未能處理時毅往,就會發(fā)送Reset包直接終止這些鏈接。建議通過優(yōu)化應(yīng)用程序的效率來提高處理能力派近,而不是簡單地Reset攀唯。默認值為0。
net.ipv4.route.max_size 內(nèi)核所允許的最大路由數(shù)目渴丸。
net.ipv4.ip_forward 接口間轉(zhuǎn)發(fā)報文侯嘀。
net.ipv4.ip_default_ttl 報文可以經(jīng)過的最大跳數(shù)。
net.netfilter.nf_conntrack_tcp_timeout_established 在指定之間內(nèi)谱轨,已經(jīng)建立的連接如果沒有活動戒幔,則通過iptables進行清除。
net.netfilter.nf_conntrack_max 哈希表項最大值土童。

更多有關(guān)內(nèi)核參數(shù)的信息诗茎,請參考如下鏈接。

適用于

  • 云服務(wù)器 ECS
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末献汗,一起剝皮案震驚了整個濱河市敢订,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罢吃,老刑警劉巖楚午,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尿招,居然都是意外死亡矾柜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門就谜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怪蔑,“玉大人,你說我怎么就攤上這事丧荐∫牵” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵篮奄,是天一觀的道長。 經(jīng)常有香客問我割去,道長窟却,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任呻逆,我火速辦了婚禮夸赫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咖城。我一直安慰自己茬腿,他們只是感情好呼奢,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著切平,像睡著了一般握础。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悴品,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天禀综,我揣著相機與錄音,去河邊找鬼苔严。 笑死定枷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的届氢。 我是一名探鬼主播欠窒,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼退子!你這毒婦竟也來了岖妄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤絮供,失蹤者是張志新(化名)和其女友劉穎衣吠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壤靶,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡缚俏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贮乳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忧换。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖向拆,靈堂內(nèi)的尸體忽然破棺而出亚茬,到底是詐尸還是另有隱情,我是刑警寧澤浓恳,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布刹缝,位于F島的核電站,受9級特大地震影響颈将,放射性物質(zhì)發(fā)生泄漏梢夯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一晴圾、第九天 我趴在偏房一處隱蔽的房頂上張望颂砸。 院中可真熱鬧,春花似錦、人聲如沸人乓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽色罚。三九已至碰缔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間保屯,已是汗流浹背手负。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姑尺,地道東北人竟终。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像切蟋,于是被迫代替她去往敵國和親统捶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容