한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › L6 伺服器網路卡

超過雲端 PPS 上限 Cloud PPS / bandwidth allowance

原因 ID nic-cloud-pps · 主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發), 外部(外部)

在含圖解與實驗的完整版中開啟卡片 →

雲端伺服器依類型各有每秒封包數與頻寬的上限,超過時會默默丟棄。

為什麼 同時上線人數增加,每秒封包數超過執行個體上限 → 於是 雲端網路丟棄超出的部分 → 畫面上 找不出原因的封包遺失造成瞬移、技能被吃。伺服器 CPU 還有餘裕

症狀
瞬移, 吃指令/回檔
因素
遺失
誰會遇到
整個伺服器
何時
人潮湧入時, 晚間尖峰時段
負責單位
主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發), 外部(外部)
遊戲開發團隊要做的事
合併封包(把一個 tick 的訊息放進一個封包),避免頻繁送出很小的封包。
基礎設施團隊要做的事
確認超過上限的計數器(AWS 為 pps_allowance_exceeded、conntrack_allowance_exceeded 等)並設定警示,改用更大的執行個體,連線追蹤上限則用不會產生追蹤的安全群組配置來避開。
外部要做的事
向雲端供應商詢問各執行個體類型的每秒封包數與連線追蹤上限。
數值參考
上限依執行個體大小而異,每秒封包數的上限多半不公開。小型執行個體的「最高 10Gbps」只是額度(credit)還有剩時(通常 5~60 分鐘)才能使用的突發速度,平時的基準速度低得多。
圖表上
碰到上限後持平 · 每秒封包數、allowance 超限計數器
查看位置
以短間隔收集 ethtool -S 的 ENA 計數器 pps_allowance_exceeded、bw_in_allowance_exceeded、bw_out_allowance_exceeded、conntrack_allowance_exceeded,與每秒封包數一起看。也可以用 CloudWatch agent 上傳這些計數器並設定警示
符合的跡象
遺失發生的時間點 allowance 超限計數器增加,每秒封包數卡在某個數值上不去。伺服器 CPU 還有餘裕
不符合的跡象
超限計數器沒有變化時,就不是這個原因。單一核心的 %soft 達到 100% 時是「NIC 中斷集中在單一核心」
確認方式
用基礎設施工具確認(不需要遊戲程式碼)
深入了解
conntrack_allowance_exceeded 表示連線追蹤表已滿、新連線被丟棄。如果追蹤表還有餘裕,只是閒置連線的追蹤過期而斷線,請參考「雲端安全群組的連線追蹤過期」。

出處

  1. Monitor network performance for ENA settings on your EC2 instance AWS
    每個執行個體都有頻寬、PPS、連線追蹤上限,超過時先放進佇列再丟棄,pps_allowance_exceeded、conntrack_allowance_exceeded 計數器
  2. Amazon EC2 instance network bandwidth AWS
    16 vCPU 以下執行個體的「最高 N Gbps」是消耗網路 I/O 額度的突發速度(通常 5~60 分鐘),額度用完就回到基準頻寬

相關原因

同一層:L6 伺服器網路卡

同一症狀(瞬移)在其他層的原因

查看含圖解與實驗的完整版卡片