日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

關(guān)閉IPVS的estimation功能解決網(wǎng)絡(luò)抖動問題

使用Linux的IPVS模塊時,IPVS會默認(rèn)啟用其estimation功能,當(dāng)服務(wù)器規(guī)格較大且Service數(shù)量多時(例如,容器Kubernetes大規(guī)模集群場景),該功能可能導(dǎo)致服務(wù)端的網(wǎng)絡(luò)請求出現(xiàn)幾十到上百毫秒的延時或引起網(wǎng)絡(luò)抖動。Alibaba Cloud Linux鏡像提供了關(guān)閉IPVS的estimation功能的能力,若您不依賴estimation統(tǒng)計數(shù)據(jù)包數(shù)、連接數(shù)等信息,建議關(guān)閉IPVS的estimation功能,以消除由于統(tǒng)計帶來的額外開銷和抖動問題。

背景信息

什么是IPVS?

IPVS(IP Virtual Server)是Linux內(nèi)核的一個組件,可將基于TCP和UDP服務(wù)的請求定向到真實服務(wù)器,實現(xiàn)內(nèi)核態(tài)四層負(fù)載均衡。在Kubernetes中,IPVS可作為其組件Kube-proxy的一種代理模式,將Service的請求轉(zhuǎn)發(fā)到后端Pod,來實現(xiàn)Kubernetes服務(wù)的負(fù)載均衡。特別是在大規(guī)模集群中,對于服務(wù)間的流量分發(fā)和負(fù)載均衡需求,IPVS可以提供更好的響應(yīng)速度和資源利用率。

說明

Kube-proxy是Kubernetes集群中的一個重要組件,負(fù)責(zé)為服務(wù)實現(xiàn)網(wǎng)絡(luò)代理和負(fù)載均衡功能。

什么是IPVS的estimation功能?為什么estimation功能會導(dǎo)致網(wǎng)絡(luò)請求延時或抖動?

IPVS中內(nèi)置了定時器estimation_timer,用于統(tǒng)計每個時間片中每個服務(wù)收發(fā)的數(shù)據(jù)包、連接數(shù)量等信息,該定時器默認(rèn)開啟。

IPVS的estimation功能導(dǎo)致網(wǎng)絡(luò)請求延時或抖動的原因主要有以下:

  • 一方面,隨著Service數(shù)量的增加,需要統(tǒng)計的計算量會增加且呈現(xiàn)線性。同時,內(nèi)核為了降低計算資源和存儲資源開銷,將統(tǒng)計數(shù)據(jù)按照CPU維度來存放,CPU數(shù)量越多,每次統(tǒng)計需要遍歷的CPU數(shù)量就越多。因此,當(dāng)服務(wù)數(shù)量多且CPU數(shù)量也很多時,每次定時器estimation_timer統(tǒng)計的開銷會顯著增加。

    image
  • 另一方面,Linux中定時器執(zhí)行的權(quán)限較高,在執(zhí)行定時器任務(wù)時,其他任務(wù)無法得到執(zhí)行,導(dǎo)致最后收包的延遲。體現(xiàn)在應(yīng)用中,就會表現(xiàn)出服務(wù)器的請求會出現(xiàn)幾十甚至上百毫秒的時延,此時ping該服務(wù)器會產(chǎn)生抖動。

功能限制

僅以下內(nèi)核版本的Alibaba Cloud Linux鏡像支持關(guān)閉IPVS的estimation功能:

  • Alibaba Cloud Linux 2:4.19.91-22及以上內(nèi)核版本。

  • Alibaba Cloud Linux 3:5.10.134-14及以上內(nèi)核版本。

關(guān)閉estimation功能解決網(wǎng)絡(luò)抖動問題

重要

關(guān)閉IPVS的estimation功能會導(dǎo)致IPVS的服務(wù)統(tǒng)計失效,一旦關(guān)閉后,將看不到相應(yīng)的服務(wù)的連接數(shù)、收到數(shù)據(jù)包等信息的變化,即通過類似sudo ipvsadm -Ln --stats命令不會看到相應(yīng)統(tǒng)計信息的變化,直到重新開啟該功能為止。因此,在關(guān)閉前,請評估關(guān)閉estimation功能對相應(yīng)業(yè)務(wù)的影響。

  1. 遠(yuǎn)程登錄ECS實例。

    具體操作,請參見通過密碼或密鑰認(rèn)證登錄Linux實例

  2. 執(zhí)行以下命令在ECS上關(guān)閉estimation功能。

    1. 執(zhí)行以下命令打開sysctl配置文件/etc/sysctl.conf

      sudo vim /etc/sysctl.conf
    2. 在文件末尾添加以下行,保存并關(guān)閉文件。

      net.ipv4.vs.run_estimation = 0
    3. 執(zhí)行以下命令使配置更改生效。

      sudo sysctl -p
    4. 對于容器場景,您還需要執(zhí)行相關(guān)操作來徹底關(guān)閉estimation功能。

      • 情況1:每次重新加載IPVS模塊后,均需再次執(zhí)行sysctl -p命令使配置生效。建議您通過modprobe配置文件,實現(xiàn)系統(tǒng)每次重新加載IPVS模塊時,自動執(zhí)行sysctl -p命令,使sysctl.conf配置生效以關(guān)閉estimation功能。

        1. 創(chuàng)建一個modprobe配置文件(例如ipvs.conf)。

          sudo vim /etc/modprobe.d/ipvs.conf
        2. 在文件中添加以下內(nèi)容后,保存并退出。

          options ip_vs run_estimation=0 post-up sysctl -p
      • 情況2:如果您還在容器里(例如Network Namespace上)配置了IPVS規(guī)則,則還需要在每個容器上關(guān)閉estimation功能。

        說明

        對于阿里云容器服務(wù)ACK,默認(rèn)的Kube-proxy代理模式為IPVS,規(guī)則配置在HOST側(cè),無需在每個容器上關(guān)閉estimation功能。如果您使用的是阿里云容器服務(wù)ACK,請忽略該操作。

    5. 驗證estimation功能是否關(guān)閉。

      • 方式一:運行命令sudo sysctl net.ipv4.vs.run_estimation,若返回net.ipv4.vs.run_estimation = 0,則表示estimation功能已關(guān)閉。

      • 方式二:運行sudo ipvsadm -Ln --stats命令,若統(tǒng)計值不再變化,表示estimation功能已關(guān)閉。

        重要

        如果您沒有安裝ipvsadm工具,可執(zhí)行sudo yum install ipvsadm命令進(jìn)行安裝。

相關(guān)操作

驗證網(wǎng)絡(luò)抖動/延時是否解決

  • 方式一:ping云服務(wù)器的IP地址或域名。如果延遲值保持相對穩(wěn)定,并且介于合理的范圍內(nèi),則可以確定網(wǎng)絡(luò)延遲問題已經(jīng)解決。

  • 方式二:使用網(wǎng)絡(luò)性能測試工具進(jìn)行全面的延遲和抖動測試,觀察是否還有長尾延遲(tail latency)。如果長尾延遲的頻率和幅度顯著減少,或者不再出現(xiàn),那么可以認(rèn)為網(wǎng)絡(luò)抖動/延時問題已經(jīng)解決。

    說明

    如果您通過關(guān)閉estimation功能發(fā)現(xiàn)仍然存在網(wǎng)絡(luò)抖動/延時問題,可通過容器服務(wù)平臺提供的網(wǎng)絡(luò)診斷功能進(jìn)行診斷。具體操作,請參考網(wǎng)絡(luò)診斷

再次開啟estimation功能

如果您希望再次打開estimation功能,可將sysctl和modprobe配置文件中的run_estimation相關(guān)的值改為1