遊戲 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 表示連線追蹤表已滿、新連線被丟棄。如果追蹤表還有餘裕,只是閒置連線的追蹤過期而斷線,請參考「雲端安全群組的連線追蹤過期」。
出處
- Monitor network performance for ENA settings on your EC2 instance AWS
每個執行個體都有頻寬、PPS、連線追蹤上限,超過時先放進佇列再丟棄,pps_allowance_exceeded、conntrack_allowance_exceeded 計數器 - Amazon EC2 instance network bandwidth AWS
16 vCPU 以下執行個體的「最高 N Gbps」是消耗網路 I/O 額度的突發速度(通常 5~60 分鐘),額度用完就回到基準頻寬
相關原因
同一層:L6 伺服器網路卡
同一症狀(瞬移)在其他層的原因
查看含圖解與實驗的完整版卡片