溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux常用內(nèi)核網(wǎng)絡(luò)參數(shù)及修改方法是什么

發(fā)布時間:2022-01-21 11:30:27 來源:億速云 閱讀:233 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章為大家展示了Linux常用內(nèi)核網(wǎng)絡(luò)參數(shù)及修改方法是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

Linux常用內(nèi)核參數(shù)

參數(shù)描述
net.core.rmem_default默認(rèn)的TCP數(shù)據(jù)接收窗口大小(字節(jié))。
net.core.rmem_max最大的TCP數(shù)據(jù)接收窗口(字節(jié))。
net.core.wmem_default默認(rèn)的TCP數(shù)據(jù)發(fā)送窗口大?。ㄗ止?jié))。
net.core.wmem_max最大的TCP數(shù)據(jù)發(fā)送窗口(字節(jié))。
net.core.netdev_max_backlog當(dāng)內(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ù)負(fù)載很高,則有必要調(diào)高該參數(shù)。listen(2)函數(shù)中的參數(shù)backlog 同樣是指明監(jiān)聽的端口處于ESTABLISHED的數(shù)量上限,當(dāng)backlog大于net.core.somaxconn時,以net.core.somaxconn參數(shù)為準(zhǔn)。
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ù)。
第二個值是默認(rèn)值(該值會被rmem_default覆蓋),緩沖區(qū)在系統(tǒng)負(fù)載不重的情況下可以增長到這個值。
第三個值是接收緩沖區(qū)空間的最大字節(jié)數(shù)(該值會被rmem_max覆蓋)。
net.ipv4.tcp_wmem為自動調(diào)優(yōu)定義Socket使用的內(nèi)存。
第一個值是為Socket發(fā)送緩沖區(qū)分配的最少字節(jié)數(shù)。
第二個值是默認(rèn)值(該值會被wmem_default覆蓋),緩沖區(qū)在系統(tǒng)負(fù)載不重的情況下可以增長到這個值。
第三個值是發(fā)送緩沖區(qū)空間的最大字節(jié)數(shù)(該值會被wmem_max覆蓋)。
net.ipv4.tcp_keepalive_timeTCP發(fā)送keepalive探測消息的間隔時間(秒),用于確認(rèn)TCP連接是否有效。
net.ipv4.tcp_keepalive_intvl探測消息未獲得響應(yīng)時,重發(fā)該消息的間隔時間(秒)。
net.ipv4.tcp_keepalive_probes在認(rèn)定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)答,可以進(jìn)行有選擇應(yīng)答(SACK)從而減少擁塞情況的發(fā)生,這個選項也應(yīng)該啟用。
net.ipv4.tcp_timestampsTCP時間戳(會在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同步標(biāo)簽(SYN_COOKIES),內(nèi)核必須開啟并編譯CONFIG_SYN_COOKIES,SYN_COOKIES可以防止一個套接字在有過多試圖連接到達(dá)時,引起過載。默認(rèn)值0表示關(guān)閉。
當(dāng)該參數(shù)被設(shè)置為1,且SYN_RECV隊列滿了之后,內(nèi)核會對SYN包的回復(fù)做一定的修改,即在響應(yīng)的SYN+ACK包中,初始的序列號是由源IP+Port、目的IP+Port及時間這五個參數(shù)共同計算出一個值組成精心組裝的TCP包。由于ACK包中確認(rèn)的序列號并不是之前計算出的值,惡意攻擊者無法響應(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ù)料的進(jìn)程死亡。
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)指的是當(dāng)系統(tǒng)收到SYN后,作為SYN+ACK響應(yīng)后等待對方回復(fù)三次握手階段中的最后一個ACK的階段。對于還未獲得對方確認(rèn)的連接請求,可保存在隊列中的最大數(shù)目。如果服務(wù)器經(jīng)常出現(xiàn)過載,可以嘗試增加這個數(shù)字。默認(rèn)為1024。
net.ipv4.tcp_low_latency允許TCP/IP棧適應(yīng)在高吞吐量情況下低延時的情況,這個選項應(yīng)該禁用。
net.ipv4.tcp_westwood啟用發(fā)送者端的擁塞控制算法,它可以維護(hù)對吞吐量的評估,并試圖對帶寬的整體利用情況進(jìn)行優(yōu)化,對于WAN通信來說應(yīng)該啟用這個選項。
net.ipv4.tcp_bic為快速長距離網(wǎng)絡(luò)啟用Binary Increase Congestion,這樣可以更好地利用以GB速度進(jìn)行操作的鏈接,對于WAN通信應(yīng)該啟用這個選項。
net.ipv4.tcp_max_tw_buckets該參數(shù)設(shè)置系統(tǒng)的TIME_WAIT的數(shù)量,如果超過默認(rèn)值則會被立即清除。默認(rèn)為180000。
net.ipv4.tcp_synack_retries指明了處于SYN_RECV狀態(tài)時重傳SYN+ACK包的次數(shù)。
net.ipv4.tcp_abort_on_overflow設(shè)置該參數(shù)為1時,當(dāng)系統(tǒng)在短時間內(nèi)收到了大量的請求,而相關(guān)的應(yīng)用程序未能處理時,就會發(fā)送Reset包直接終止這些鏈接。建議通過優(yōu)化應(yīng)用程序的效率來提高處理能力,而不是簡單地Reset。默認(rèn)值為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進(jìn)行清除。
net.netfilter.nf_conntrack_max哈希表項最大值。

查看和修改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文件夾中存放了當(dāng)前系統(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ù)值僅在當(dāng)前運(yùn)行中生效,系統(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命令,查看當(dāng)前系統(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

上述內(nèi)容就是Linux常用內(nèi)核網(wǎng)絡(luò)參數(shù)及修改方法是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI