上海平臺有限公司seo的公司排名
本文主要介紹可能引起云服務(wù)器網(wǎng)絡(luò)訪問丟包問題的主要原因,及對應(yīng)排查、解決方法。下面一起了解騰訊云國際云服務(wù)器網(wǎng)絡(luò)訪問丟包問題解決辦法:
可能原因
引起云服務(wù)器網(wǎng)絡(luò)訪問丟包問題的可能原因如下:
1.觸發(fā)限速導(dǎo)致 TCP 丟包
2.觸發(fā)限速導(dǎo)致 UDP 丟包
3.觸發(fā)軟中斷丟包
4.UDP 發(fā)送緩沖區(qū)滿
5.UDP 接收緩沖區(qū)滿
6.TCP 全連接隊列滿
7.TCP 請求溢出
8.連接數(shù)達到上限
9.iptables policy 設(shè)置相關(guān)規(guī)則
前提條件
在進行問題定位及處理前需登錄實例,詳情請參見 登錄 Linux 實例 及 登錄 Windows 實例。
故障處理
觸發(fā)限速導(dǎo)致 TCP 丟包
云服務(wù)器實例具備多種規(guī)格,且不同規(guī)格有不同的網(wǎng)絡(luò)性能。當實例的帶寬或包量超過實例規(guī)格對應(yīng)的標準時,會觸發(fā)平臺側(cè)的限速,導(dǎo)致丟包。排查及處理步驟如下:
1.查看實例的帶寬及包量。
Linux 實例可執(zhí)行 sar -n DEV 2 命令查看帶寬及包量。其中,rxpck/s 和 txpck/s 指標是收發(fā)包量,rxkB/s 和 txkB/s 指標是收發(fā)帶寬。
2.使用獲取的帶寬及包量數(shù)據(jù)對比 實例規(guī)格,查看是否達到實例規(guī)格性能瓶頸。
是,則需升級實例規(guī)格或調(diào)整業(yè)務(wù)量。
否,若未達到實例規(guī)格性能瓶頸,則可通過 提交工單 進一步定位處理。
觸發(fā)限速導(dǎo)致 UDP 丟包
參考 觸發(fā)限速導(dǎo)致 TCP 丟包 步驟,判斷是否由實例規(guī)格性能瓶頸引起丟包。
1.是,則需升級實例規(guī)格或調(diào)整業(yè)務(wù)量。
2.若未達到實例規(guī)格性能瓶頸,則可能是由平臺對 DNS 請求額外的頻率限制引起。在實例整體帶寬或包量達到實例規(guī)格的性能瓶頸時,可能會觸發(fā) DNS 請求限速而出現(xiàn) UDP 丟包??赏ㄟ^ 提交工單 進一步定位處理。
觸發(fā)軟中斷丟包
當操作系統(tǒng)監(jiān)測到 /proc/net/softnet_stat 的第二列計數(shù)值在增長時,則會判斷為“軟中斷丟包”。當您的實例觸發(fā)了軟中斷丟包時,可通過以下步驟進行排查及處理:
查看是否開啟 RPS:
1.開啟,則內(nèi)核參數(shù) net.core.netdev_max_backlog 偏小時會引發(fā)丟包,需調(diào)大。內(nèi)核參數(shù)詳細信息請參見 Linux 實例常用內(nèi)核參數(shù)介紹。
2.未開啟,則查看是否為 CPU 單核軟中斷高,導(dǎo)致未能及時收發(fā)數(shù)據(jù)。若是,您可以:選擇開啟 RPS,使軟中斷分配更為均衡。
3.檢查業(yè)務(wù)程序是否會引發(fā)軟中斷分配不均勻。
UDP 發(fā)送緩沖區(qū)滿
若您的實例因 UDP 緩沖區(qū)不足而導(dǎo)致丟包時,可通過以下步驟進行排查處理:
1.使用 ss -nump 命令查看 UDP 發(fā)送緩沖區(qū)是否已滿。
2.若是,則調(diào)大內(nèi)核參數(shù) net.core.wmem_max 和 net.core.wmem_default,并重啟 UDP 程序以生效。內(nèi)核參數(shù)詳細信息請參見 Linux 實例常用內(nèi)核參數(shù)介紹。
3.若仍存在丟包問題,則可通過 ss -nump 命令查看發(fā)送緩沖區(qū)并沒有按預(yù)期的增大。此時需要檢查業(yè)務(wù)代碼是否通過 setsockopt 設(shè)置了 SO_SNDBUF。若是,則請修改代碼增大 SO_SNDBUF。
UDP 接收緩沖區(qū)滿
若您的實例因 UDP 緩沖區(qū)不足而導(dǎo)致丟包時,可通過以下步驟進行處理:
1.使用 ss -nump 命令查看 UDP 接收緩沖區(qū)是否已滿。
2.若是,則調(diào)大內(nèi)核參數(shù) net.core.rmem_max 和 net.core.rmem_default,并重啟 UDP 程序以生效。內(nèi)核參數(shù)詳細信息請參見 Linux 實例常用內(nèi)核參數(shù)介紹。
3.若仍存在丟包問題,則可通過 ss -nump 命令查看接收緩沖區(qū)并沒有按預(yù)期的增大。此時需要檢查業(yè)務(wù)代碼是否通過 setsockopt 設(shè)置了 SO_RCVBUF。若是,則請修改代碼增大 SO_RCVBUF。
TCP 全連接隊列滿
TCP 全連接隊列的長度取 net.core.somaxconn 及業(yè)務(wù)進程調(diào)用 listen 時傳入的 backlog 參數(shù),兩者中的較小值。若您的實例發(fā)生 TCP 全連接隊列滿導(dǎo)致丟包時,可通過以下步驟進行處理:
1.調(diào)大內(nèi)核參數(shù) net.core.somaxconn。內(nèi)核參數(shù)詳細信息請參見 Linux 實例常用內(nèi)核參數(shù)介紹。
2.檢查業(yè)務(wù)進程是否傳入了 backlog 參數(shù)。若是,則相應(yīng)調(diào)大。
TCP 請求溢出
在 TCP 接收數(shù)據(jù)時,若 socket 被 user 鎖住,則會將數(shù)據(jù)送到 backlog 隊列。若此過程若失敗,則會引起 TCP 請求溢出導(dǎo)致丟包。通常情況下,假設(shè)業(yè)務(wù)程序性能正常,則可參考以下方式從系統(tǒng)層面排查及處理問題:
檢查業(yè)務(wù)程序是否通過 setsockopt 自行設(shè)置了 buffer 大小:
1.若已設(shè)置,且該值不夠大,可以修改業(yè)務(wù)程序指定一個更大的值,或不再通過 setsockopt 指定大小。
說明setsockopt 的取值受內(nèi)核參數(shù) net.core.rmem_max 和 net.core.wmem_max 限制。調(diào)整業(yè)務(wù)程序的同時,可以同步調(diào)整 net.core.rmem_max 和 net.core.wmem_max。調(diào)整后請重啟業(yè)務(wù)程序使配置生效。
2.若未設(shè)置,則可以調(diào)大 net.ipv4.tcp_mem、net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem 內(nèi)核參數(shù)來調(diào)整 TCP socket 的水位。
內(nèi)核參數(shù)修改請參見 Linux 實例常用內(nèi)核參數(shù)介紹。
連接數(shù)達到上限
云服務(wù)器實例具備多種規(guī)格,且不同規(guī)格有不同的連接數(shù)性能指標。當實例的連接數(shù)超過實例規(guī)格對應(yīng)的標準時,會觸發(fā)平臺的限速,導(dǎo)致丟包。處理步驟如下:
說明連接數(shù)指宿主機上保存的云服務(wù)器實例的會話數(shù),包含 TCP、UDP 和 ICMP。該數(shù)值大于在云服務(wù)器實例上通過 ss 或 netstat 命令獲取的網(wǎng)絡(luò)連接數(shù)。
查看您實例的連接數(shù),并對比 實例規(guī)格,查看是否達到實例規(guī)格性能瓶頸。
1.是,則需升級實例規(guī)格或調(diào)整業(yè)務(wù)量。
2.否,若未達到實例規(guī)格性能瓶頸,則可通過 提交工單 進一步定位處理。
iptables policy 設(shè)置相關(guān)規(guī)則
在云服務(wù)器 iptables 未設(shè)置相關(guān)規(guī)則的情況下,可能是 iptables policy 相關(guān)規(guī)則設(shè)置導(dǎo)致到達云服務(wù)器的包都被丟棄。處理步驟如下:
1.執(zhí)行以下命令,查看 iptables policy 規(guī)則。
iptables -L | grep policy
iptables policy 規(guī)則默認為 ACCEPT。若 INPUT 鏈 policy 非 ACCEPT,則會導(dǎo)致所有到服務(wù)器的包都被丟棄。例如,若返回如下結(jié)果,表示進入云服務(wù)器的包都會被 drop。
Chain INPUT (policy DROP)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
1.執(zhí)行如下命令,按需調(diào)整 -P 后的值。
iptables -P INPUT ACCEPT
2.調(diào)整后,可再次執(zhí)行 步驟1 命令查看,應(yīng)返回如下結(jié)果:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)