คู่มือเกมแลค › L6 การ์ดเครือข่ายของเซิร์ฟเวอร์
แบนด์วิดท์ NIC เต็ม NIC bandwidth saturation
ID สาเหตุ nic-saturate · ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ถ้าใช้การ์ด 1 Gbps หรือ 10 Gbps จนถึงขีดจำกัด transmit queue จะยาวขึ้น และสุดท้ายแพ็กเก็ตจะถูกทิ้ง
ทำไม broadcast เพิ่มขึ้นจนปริมาณส่งชนขีดจำกัดของการ์ด → ผลคือ transmit queue ยาวขึ้น และเมื่อล้นก็ทิ้ง → บนหน้าจอ ความหน่วงและแพ็กเก็ตหายทั้งเซิร์ฟเวอร์ (อินพุตดีเลย์, วาร์ป)
อาการ อินพุตดีเลย์ , วาร์ป
ปัจจัย ความหน่วง, แพ็กเก็ตหาย
ใครเจอ ทั้งเซิร์ฟเวอร์
เกิดเมื่อไร ตอนคนแห่มารวมกัน
ผู้รับผิดชอบ ผู้รับผิดชอบหลัก พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม) · ร่วมกับ อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา)
งานฝั่งทีมพัฒนาเกม ลดปริมาณการส่ง (AOI, บีบอัด, ส่งเฉพาะส่วนที่เปลี่ยน)
งานฝั่งทีมอินฟรา เพิ่มการ์ด (NIC ที่เร็วขึ้น, บนคลาวด์ใช้อินสแตนซ์ที่ใหญ่ขึ้น), ตั้ง alert อัตราการใช้งาน NIC
บนกราฟ ชนเพดานแล้วแบนราบ · ปริมาณส่งของ NIC, การทิ้งขาออก
จุดที่ต้องดู เทียบ txkB/s และ %ifutil (อัตราการใช้งานเทียบกับความเร็วอินเทอร์เฟซ) ของ sar -n DEV 1 กับความเร็ว NIC และแบนด์วิดท์ของอินสแตนซ์ แล้วดู TX dropped ของ ip -s link ประกอบ สัญญาณว่าใช่ ปริมาณส่งแบนราบใกล้แบนด์วิดท์ของ NIC หรืออินสแตนซ์ และตั้งแต่นั้นการทิ้งขาออกและความหน่วงของทั้งเซิร์ฟเวอร์ก็เพิ่มขึ้น สัญญาณว่าไม่ใช่ ถ้าแบนด์วิดท์ยังเหลือ ก็ไม่ใช่สาเหตุนี้ ถ้ามีแพ็กเก็ตเล็กจำนวนมากและมีแพ็กเก็ตหาย น่าจะเป็น “เกินขีดจำกัด PPS ของคลาวด์” วิธีตรวจ ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)
แหล่งอ้างอิง Interface statistics Linux kernel tx_dropped: จำนวนแพ็กเก็ตที่ถูกทิ้งระหว่างส่งเพราะทรัพยากรไม่พอ Amazon EC2 instance network bandwidth AWS แบนด์วิดท์ที่อินสแตนซ์ใช้ได้กำหนดตามจำนวน vCPU (ขนาดอินสแตนซ์) sar(1) — Linux manual page sysstat rxkB/s, txkB/s และ %ifutil (อัตราการใช้งานเทียบกับความเร็วอินเทอร์เฟซ) ของ -n DEV
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: L6 การ์ดเครือข่ายของเซิร์ฟเวอร์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (อินพุตดีเลย์)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง