คู่มือเกมแลค › L11 ดิสก์
การเขียน core dump Core dump writing
ID สาเหตุ dk-coredump · ผู้รับผิดชอบหลัก อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →
ตอนเซิร์ฟเวอร์ล่ม ต้องเขียนหน่วยความจำหลาย GB ลงดิสก์ บางครั้งการรีสตาร์ตจึงล่าช้าไปหลายนาที
ทำไม เซิร์ฟเวอร์แครช จึงเขียนหน่วยความจำทั้งหมดลงไฟล์ → ผลคือ รีสตาร์ตไม่ได้ระหว่างเขียนหลาย GB → บนหน้าจอ เซิร์ฟเวอร์ล่มจนผู้เล่นหลุด แล้วเข้าเกมไม่ได้อยู่นาน
- อาการ
- เข้าเกมไม่ได้/โหลดไม่จบ
- ปัจจัย
- การหยุดชะงัก
- ใครเจอ
- ทั้งเซิร์ฟเวอร์
- เกิดเมื่อไร
- สุ่มเป็นครั้งคราว
- ผู้รับผิดชอบ
- ผู้รับผิดชอบหลัก อินฟราเซิร์ฟเวอร์ (ทีมอินฟรา) · ร่วมกับ พัฒนาเซิร์ฟเวอร์ (ทีมพัฒนาเกม)
- งานฝั่งทีมพัฒนาเกม
- พิจารณาใช้ dump ขนาดเล็กที่เก็บเฉพาะหน่วยความจำที่จำเป็น (minidump), แก้ต้นเหตุของการแครช
- งานฝั่งทีมอินฟรา
- จำกัดขนาด dump (ตั้งค่า core dump ของ OS), ใช้ดิสก์ที่เร็ว, แยกการรีสตาร์ตออกจากการทำ dump (บีบอัดและอัปโหลด dump แยกทำหลังรีสตาร์ต)
- บนกราฟ
- การเชื่อมต่อหลุดพร้อมกัน · จำนวนการเชื่อมต่อ, เวลารีสตาร์ตเซิร์ฟเวอร์
- จุดที่ต้องดู
- วางเวลาที่แครช ขนาดไฟล์ core (coredumpctl list และ info หรือไฟล์ในตำแหน่งที่ core_pattern ชี้ไว้) เวลาที่เขียนไฟล์เสร็จ และเวลาที่เซอร์วิสกลับมาทำงานเรียงคู่กัน แล้วดู wkB/s ของ iostat -x ในช่วงนั้น
- สัญญาณว่าใช่
- หลังแครช ระหว่างเขียนไฟล์ core ขนาดหลาย GB การเขียนดิสก์อยู่ใกล้ขีดจำกัดตลอด และรีสตาร์ตเริ่มหลังเขียนเสร็จแล้วเท่านั้น
- สัญญาณว่าไม่ใช่
- core dump ปิดอยู่หรือจบเร็วเพราะไฟล์เล็ก แต่รีสตาร์ตยังช้า: น่าจะเป็นขั้นตอนเริ่มเซิร์ฟเวอร์ เช่น การโหลดแมพ หรือ cold cache ของ DB (db-cold-cache)
- วิธีตรวจ
- ใช้เครื่องมือฝั่งอินฟรา (ไม่ต้องใช้โค้ดเกม)
แหล่งอ้างอิง
- core(5) — Linux manual page Linux man-pages
RLIMIT_CORE กำหนดเพดานขนาดไฟล์ core, coredump_filter เลือกส่วนของหน่วยความจำที่จะเก็บ, ส่ง core dump ผ่าน pipe ไปให้โปรแกรมจัดการแยก - Minidump Files Microsoft
minidump เก็บเฉพาะข้อมูลส่วนที่มีประโยชน์ของ crash dump จึงสร้างได้เร็วและเล็ก - coredumpctl(1) — Linux manual page systemd
list: รายการ core dump ที่เหลืออยู่ใน journal (TIME คือเวลาแครชที่เคอร์เนลรายงาน), info: รายละเอียดของแต่ละ dump และขนาดที่เขียนลงดิสก์ - iostat(1) — Linux manual page sysstat
-x: wkB/s (ปริมาณเขียนดิสก์ต่อวินาที)
สาเหตุที่ควรดูประกอบ
ชั้นเดียวกัน: L11 ดิสก์
สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (เข้าเกมไม่ได้/โหลดไม่จบ)
ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง