Minecraft: ระบุปัญหาเซิร์ฟเวอร์ด้วยรายงาน timings
คู่มือนี้ถูกสร้างขึ้นด้วยผลิตภัณฑ์ดังต่อไปนี้:
(รายละเอียดอาจแตกต่างกันไปตามผลิตภัณฑ์จากผู้ให้บริการต่างๆ แต่แนวคิดหลักยังคงเหมือนเดิม)
อธิบาย
รายงาน timing คืออะไร?
รายงาน timings คล้ายกับตัวจัดการงาน (task manager) ของคอมพิวเตอร์คุณ ที่ช่วยให้คุณค้นหาปัญหาโดยเฉพาะเวลาที่เกิดแลค รายงาน timing จะบันทึกกิจกรรมทั้งหมดของเซิร์ฟเวอร์และแสดงผลออกมาเป็นภาพ
รายงาน Timing
สร้างรายงาน timing
ขึ้นอยู่กับซอฟต์แวร์เซิร์ฟเวอร์ รายงาน timing จะถูกสร้างแตกต่างกัน โดยพื้นฐานคุณต้องเริ่มบันทึกก่อนด้วยคำสั่งนี้ (ยกเว้น Paper Spigot ถ้าการตั้งค่าไม่ได้ถูกเปลี่ยนแปลง)
/timings start
ในระหว่างการบันทึก ให้ใช้เซิร์ฟเวอร์เหมือนปกติ เพื่อให้ปัญหาที่เกิดขึ้นถูกบันทึกและวิเคราะห์ได้ละเอียดขึ้น ระยะเวลาการบันทึกควรนาน อย่างน้อย 10 นาที หรือมากกว่านั้นถ้าเป็นไปได้
ส่งออกรายงาน timing
เพื่อสร้างและส่งออกรายงาน Timings ให้ใช้คำสั่งนี้:
/timings paste
หลังจากไม่กี่วินาที จะมีข้อความแจ้งว่าการส่งออกสำเร็จ รายงาน Timings สามารถเปิดได้โดยคลิกลิงก์
การวิเคราะห์
↔️ จำกัดช่วงค่าที่สนใจ
เมื่อส่งออกรายงาน Timings และเปิดตามขั้นตอนข้างต้น จะเห็นหน้าต่างคล้ายแบบนี้:
อันดับแรก ให้ดูกราฟอย่างละเอียดเพื่อเช็คค่าคร่าวๆ ของแต่ละจุดบันทึกโดยเลื่อนเมาส์ไปที่แต่ละจุด
เพื่อให้ได้ค่าที่แม่นยำที่สุดซึ่งอาจบ่งชี้ปัญหาบนเซิร์ฟเวอร์ ควรจำกัดช่วงเวลาที่มีปัญหาด้วยสไลเดอร์ด้านล่างตามภาพนี้:
ตรวจสอบค่าบนเซิร์ฟเวอร์
มีทั้งหมด 3 คอลัมน์ ตามภาพด้านล่าง กล่องหมายเลข 1 แสดงว่า % ของ tick (20 tick = 1 วินาที) ที่กระบวนการหลักใช้ไปเท่าไหร่ รวมถึงจำนวนครั้งที่กระบวนการนี้ถูกเรียกใช้ในช่วงบันทึก
ในกล่องหมายเลข 2 จะแสดงค่าเป็นมิลลิวินาทีที่แม่นยำกว่า แต่ต้องระวังว่าเวลานี้ไม่ควรเกิน 50ms เพราะถ้าเกินจะเกิดปฏิกิริยาลูกโซ่ ทำให้กระบวนการถัดไปสะสมและทำให้เกิดแลค เพราะเซิร์ฟเวอร์ประมวลผลล่าช้า
Full Server Tick มักจะไม่ต้องสนใจมาก เพราะค่านี้มักจะอยู่ในโซนสีแดง แต่ไม่ใช่ปัญหาใหญ่
ในทุกกรณี ควรตรวจสอบค่าที่ไฮไลต์ด้วยสีอย่างละเอียด
ตัวอย่างนี้ เราดูที่กระบวนการของทุก entity (สัตว์, มอนสเตอร์, ไอเท็ม ฯลฯ) ซึ่งค่าถูกแสดงเป็นสีส้ม คุณอาจสรุปได้เลยว่ามีปัญหาจาก entity เยอะเกินไปบนเซิร์ฟเวอร์ อาจจะมีฟาร์มม็อบ หรือมีม็อบใหม่เกิดขึ้นจำนวนมาก ถ้าคุณเจอปัญหา entity เยอะเกินไป คุณสามารถลดอัตราการเกิดในตั้งค่าหรือใช้ปลั๊กอินจำกัดจำนวน entity และลบออกอัตโนมัติถ้าจำเป็น
ตามที่อธิบายไว้ รายการจะแสดงกระบวนการหลักเสมอ โดยคลิกที่กระบวนการนั้น เราสามารถดูรายละเอียดของแต่ละประเภท entity และตรวจสอบได้ อย่าลืมดูคอลัมน์ 2 และ 3 ด้วยนะ
คุณจะเห็นว่า Minecraft::tickEntity - nms.EntitySkeleton มีการประมวลผลเยอะมาก ซึ่งอาจเกิดจากฟาร์มม็อบ
อีกกระบวนการที่มีค่าสีส้มคือ waiting blocks บล็อกที่รอคอยอาจทำงานไม่ค่อยมีประสิทธิภาพเพราะเซิร์ฟเวอร์ต้องเช็คสถานะบล็อกเหล่านี้ทุก tick ตัวอย่างเช่น ทรายที่ลอยอยู่, กรวด หรือแม้แต่น้ำและลาวา
ถ้าใช้ปริมาณน้ำเยอะในฟาร์มขนาดใหญ่ อาจทำให้เกิดปัญหาหลายอย่าง ปัญหานี้ยังเกิดขึ้นเมื่อมีการสร้าง chunk ใหม่และมีแหล่งน้ำใน chunk เหล่านั้นบนภูเขา เซิร์ฟเวอร์ต้องคำนวณสถานะน้ำใหม่ทุกครั้งเพื่อให้น้ำไหลได้อย่างราบรื่น นอกจากนี้เซิร์ฟเวอร์ยังต้องสร้างและโหลด chunk ซึ่งเป็นกระบวนการที่หนักมาก
การตรวจสอบอื่นๆ ก็ทำแบบเดียวกันได้ เพราะขั้นตอนเหมือนกันกับทุกกระบวนการ ถ้าคุณยังต้องการความช่วยเหลือในการวิเคราะห์ เรายินดีช่วยเสมอ!
ตรวจสอบปลั๊กอิน
บางครั้งปัญหาเกิดจากปลั๊กอิน เพื่อเช็คว่าปลั๊กอินเป็นสาเหตุหรือไม่ คุณสามารถถอดปลั๊กอินที่ติดตั้งออกชั่วคราวแล้วตรวจสอบสถานะเซิร์ฟเวอร์อีกครั้ง
ถ้ามีปัญหาจากปลั๊กอิน สามารถตรวจสอบได้ในส่วน "Plugins" ค่าจะถูกแสดงใน 3 คอลัมน์เหมือนกับค่าปกติของเซิร์ฟเวอร์ แต่จะไม่มีการแสดงกระบวนการหลัก แต่จะแสดงชื่อปลั๊กอินแทน คุณยังสามารถคลิกดูรายละเอียดแต่ละกระบวนการและตรวจสอบค่าได้เหมือนเดิม