您好,登錄后才能下訂單哦!
本篇文章為大家展示了Linux常用內核網絡參數及修改方法是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
參數 | 描述 |
---|---|
net.core.rmem_default | 默認的TCP數據接收窗口大小(字節)。 |
net.core.rmem_max | 最大的TCP數據接收窗口(字節)。 |
net.core.wmem_default | 默認的TCP數據發送窗口大小(字節)。 |
net.core.wmem_max | 最大的TCP數據發送窗口(字節)。 |
net.core.netdev_max_backlog | 當內核處理速度比網卡接收速度慢時,這部分多出來的包就會被保存在網卡的接收隊列上,而該參數說明了這個隊列的數量上限。在每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。 |
net.core.somaxconn | 該參數定義了系統中每一個端口最大的監聽隊列的長度,是個全局參數。該參數和net.ipv4.tcp_max_syn_backlog 有關聯,后者指的是還在三次握手的半連接的上限,該參數指的是處于ESTABLISHED的數量上限。若您的ECS實例業務負載很高,則有必要調高該參數。listen(2) 函數中的參數backlog 同樣是指明監聽的端口處于ESTABLISHED的數量上限,當backlog 大于net.core.somaxconn 時,以net.core.somaxconn 參數為準。 |
net.core.optmem_max | 表示每個套接字所允許的最大緩沖區的大小。 |
net.ipv4.tcp_mem | 確定TCP棧應該如何反映內存使用,每個值的單位都是內存頁(通常是4KB)。 第一個值是內存使用的下限。 第二個值是內存壓力模式開始對緩沖區使用應用壓力的上限。 第三個值是內存使用的上限。在這個層次上可以將報文丟棄,從而減少對內存的使用。對于較大的BDP可以增大這些值(其單位是內存頁而不是字節)。 |
net.ipv4.tcp_rmem | 為自動調優定義Socket使用的內存。 第一個值是為Socket接收緩沖區分配的最少字節數。 第二個值是默認值(該值會被rmem_default覆蓋),緩沖區在系統負載不重的情況下可以增長到這個值。 第三個值是接收緩沖區空間的最大字節數(該值會被rmem_max覆蓋)。 |
net.ipv4.tcp_wmem | 為自動調優定義Socket使用的內存。 第一個值是為Socket發送緩沖區分配的最少字節數。 第二個值是默認值(該值會被wmem_default覆蓋),緩沖區在系統負載不重的情況下可以增長到這個值。 第三個值是發送緩沖區空間的最大字節數(該值會被wmem_max覆蓋)。 |
net.ipv4.tcp_keepalive_time | TCP發送keepalive探測消息的間隔時間(秒),用于確認TCP連接是否有效。 |
net.ipv4.tcp_keepalive_intvl | 探測消息未獲得響應時,重發該消息的間隔時間(秒)。 |
net.ipv4.tcp_keepalive_probes | 在認定TCP連接失效之前,最多發送多少個keepalive探測消息。 |
net.ipv4.tcp_sack | 啟用有選擇的應答(1表示啟用),通過有選擇地應答亂序接收到的報文來提高性能,讓發送者只發送丟失的報文段,(對于廣域網通信來說)這個選項應該啟用,但是會增加對CPU的占用。 |
net.ipv4.tcp_fack | 啟用轉發應答,可以進行有選擇應答(SACK)從而減少擁塞情況的發生,這個選項也應該啟用。 |
net.ipv4.tcp_timestamps | TCP時間戳(會在TCP包頭增加12B),以一種比重發超時更精確的方法(參考RFC 1323)來啟用對RTT的計算,為實現更好的性能應該啟用這個選項。 |
net.ipv4.tcp_window_scaling | 啟用RFC 1323定義的window scaling,要支持超過64KB的TCP窗口,必須啟用該值(1表示啟用),TCP窗口最大至1GB,TCP連接雙方都啟用時才生效。 |
net.ipv4.tcp_syncookies | 該參數表示是否打開TCP同步標簽(SYN_COOKIES ),內核必須開啟并編譯CONFIG_SYN_COOKIES,SYN_COOKIES 可以防止一個套接字在有過多試圖連接到達時,引起過載。默認值0表示關閉。當該參數被設置為1,且 SYN_RECV 隊列滿了之后,內核會對SYN包的回復做一定的修改,即在響應的SYN+ACK包中,初始的序列號是由源IP+Port、目的IP+Port及時間這五個參數共同計算出一個值組成精心組裝的TCP包。由于ACK包中確認的序列號并不是之前計算出的值,惡意攻擊者無法響應或誤判,而請求者會根據收到的SYN+ACK包做正確的響應。啟用net.ipv4.tcp_syncookies 后,會忽略net.ipv4.tcp_max_syn_backlog 。 |
net.ipv4.tcp_tw_reuse | 表示是否允許將處于TIME-WAIT狀態的Socket(TIME-WAIT的端口)用于新的TCP連接。 |
net.ipv4.tcp_tw_recycle | 能夠更快地回收TIME-WAIT套接字。 |
net.ipv4.tcp_fin_timeout | 對于本端斷開的Socket連接,TCP保持在FIN-WAIT-2狀態的時間(秒)。對方可能會斷開連接或一直不結束連接或不可預料的進程死亡。 |
net.ipv4.ip_local_port_range | 表示TCP/UDP協議允許使用的本地端口號。 |
net.ipv4.tcp_max_syn_backlog | 該參數決定了系統中處于SYN_RECV 狀態的TCP連接數量。SYN_RECV 狀態指的是當系統收到SYN后,作為SYN+ACK響應后等待對方回復三次握手階段中的最后一個ACK的階段。對于還未獲得對方確認的連接請求,可保存在隊列中的最大數目。如果服務器經常出現過載,可以嘗試增加這個數字。默認為1024。 |
net.ipv4.tcp_low_latency | 允許TCP/IP棧適應在高吞吐量情況下低延時的情況,這個選項應該禁用。 |
net.ipv4.tcp_westwood | 啟用發送者端的擁塞控制算法,它可以維護對吞吐量的評估,并試圖對帶寬的整體利用情況進行優化,對于WAN通信來說應該啟用這個選項。 |
net.ipv4.tcp_bic | 為快速長距離網絡啟用Binary Increase Congestion,這樣可以更好地利用以GB速度進行操作的鏈接,對于WAN通信應該啟用這個選項。 |
net.ipv4.tcp_max_tw_buckets | 該參數設置系統的TIME_WAIT的數量,如果超過默認值則會被立即清除。默認為180000。 |
net.ipv4.tcp_synack_retries | 指明了處于SYN_RECV狀態時重傳SYN+ACK包的次數。 |
net.ipv4.tcp_abort_on_overflow | 設置該參數為1時,當系統在短時間內收到了大量的請求,而相關的應用程序未能處理時,就會發送Reset包直接終止這些鏈接。建議通過優化應用程序的效率來提高處理能力,而不是簡單地Reset。默認值為0。 |
net.ipv4.route.max_size | 內核所允許的最大路由數目。 |
net.ipv4.ip_forward | 接口間轉發報文。 |
net.ipv4.ip_default_ttl | 報文可以經過的最大跳數。 |
net.netfilter.nf_conntrack_tcp_timeout_established | 在指定之間內,已經建立的連接如果沒有活動,則通過iptables進行清除。 |
net.netfilter.nf_conntrack_max | 哈希表項最大值。 |
在修改內核參數前,需要注意以下幾點:
從實際需求出發,盡量有相關數據的支撐,不建議隨意調整內核參數。
了解參數的具體作用,需注意同類型或版本的環境中,內核參數可能有所不同。
備份ECS實例中的重要數據。關于如何備份數據請參見創建快照。
本文提供以下兩種修改Linux實例內核參數的方法。
/proc/sys/
目錄是Linux內核在啟動后生成的偽目錄,其目錄下的net
文件夾中存放了當前系統中開啟的所有內核參數,目錄樹結構與參數的完整名稱相關,如net.ipv4.tcp_tw_recycle
,它對應的文件是/proc/sys/net/ipv4/tcp_tw_recycle
文件,文件的內容就是參數值。方法一中修改的參數值僅在當前運行中生效,系統重啟后會回滾到歷史值,一般用于臨時性驗證修改的效果。若需要永久性修改,請參見方法二。
查看內核參數:使用cat
命令查看對應文件的內容,執行以下命令,查看net.ipv4.tcp_tw_recycle
的值。
cat /proc/sys/net/ipv4/tcp_tw_recycle
修改內核參數:使用echo
命令修改內核參數對應的文件,執行以下命令,將net.ipv4.tcp_tw_recycle
的值修改為0。
echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle
查看內核參數:執行sysctl -a
命令,查看當前系統中生效的所有參數,系統顯示類似如下。
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
通過以下兩種方式,修改內核參數。
說明:調整內核參數后,內核處于不穩定狀態,請務必重啟實例。
執行以下命令,臨時修改內核參數。/sbin/sysctl -w kernel.parameter="[$Example]"
說明:[$Example]為參數值,如
sysctl -w net.ipv4.tcp_tw_recycle="0"
命令,將參數值改為0。
通過修改配置文件的方式修改內核參數。
執行以下命令,修改/etc/sysctl.conf
文件中的參數。vi /etc/sysctl.conf
執行以下命令,使配置生效。/sbin/sysctl -p
上述內容就是Linux常用內核網絡參數及修改方法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。