แก้ไขข้อผิดพลาด Entity Ticking ใน Minecraft: เกมค้างและเซิร์ฟเวอร์แล็ก
หาก Minecraft Java Edition รายงานข้อผิดพลาดเกี่ยวกับเอนทิตี้ (entity ticking error ) ให้ตรวจสอบก่อนว่าเกมค้างหรือเกิดอาการแล็กหรือไม่ รายงานข้อผิดพลาดที่ระบุว่า “Ticking entity” หมายความว่าเอนทิตี้เกิดข้อผิดพลาดขณะที่เกมกำลังอัปเดต ส่วนคำเตือนในคอนโซล “Can't keep up! Is the server overloaded?” หมายความว่าเซิร์ฟเวอร์ทำงานไม่ทัน ปัญหาเหล่านี้อาจดูคล้ายกันในระหว่างการเล่น แต่ต้องการวิธีแก้ไขที่แตกต่างกัน
ใช้กระบวนการห้าขั้นตอนด้านล่างนี้เพื่อปกป้องโลกของคุณ ระบุสาเหตุ และทำการเปลี่ยนแปลงที่เล็กที่สุดแต่มีประโยชน์ กระบวนการนี้ครอบคลุมข้อผิดพลาดทั่วไปของการทำงานของเอนทิตี้ใน Minecraftและอาการแล็กของเซิร์ฟเวอร์ โดยไม่ต้องพึ่งพาคำสั่งแบบเหมาหมดที่มีความเสี่ยง หรือคำแนะนำการตั้งค่าที่ล้าสมัย
ข้อผิดพลาด "entity ticking" ใน Minecraft หมายความว่าอย่างไร
Minecraft อัปเดตเอนทิตี้ต่างๆ อย่างต่อเนื่อง เช่น มอนสเตอร์ ชาวบ้าน รถราง ไอเทมที่ตกหล่น และผู้เล่น หากการอัปเดตเอนทิตี้ใดเอนทิตี้หนึ่งล้มเหลว เวอร์ชัน Java Edition อาจหยุดทำงานพร้อมรายงานข้อผิดพลาดที่มีข้อความว่า “คำอธิบาย: เอนทิตี้ที่มีการทำงานผิดพลาด” รายงานอาจระบุประเภทของเอนทิตี้ มิติ พิกัด ข้อผิดพลาด และเส้นทางของโค้ด หลักฐานเหล่านั้นชี้ไปที่เอนทิตี้ ม็อด ปลั๊กอิน หรือบั๊กในเกมโดยเฉพาะ
เมื่อเปรียบเทียบกันแล้ว “ตามไม่ทัน!” คือคำเตือนเกี่ยวกับประสิทธิภาพของเซิร์ฟเวอร์ มันจะปรากฏขึ้นเมื่อลูปการประมวลผลไม่สามารถตามทันกำหนดการได้ ฟาร์มที่มีเอนทิตี้จำนวนมากอาจเป็นสาเหตุ แต่การสร้างชิ้นส่วนแผนที่ วงจรเรดสโตน ปลั๊กอิน ม็อด หรือความจุ CPU ที่จำกัดก็เป็นสาเหตุได้เช่นกัน ข้อความเตือนแบบเก่ากล่าวถึงความเป็นไปได้ที่นาฬิการะบบจะเปลี่ยนแปลง แต่คำพูดนั้นไม่ได้ทำให้การซิงโครไนซ์นาฬิกาเป็นวิธีแก้ไขทั่วไป ควรเปลี่ยนการตั้งค่าเวลาเฉพาะเมื่อนาฬิกาของระบบปฏิบัติการของคุณผิดพลาดหรือกระโดดไปมาจริงๆ เท่านั้น
| สิ่งที่คุณเห็น | โดยปกติแล้วมันหมายถึงอะไร | เริ่มต้นที่นี่ |
| รายงานอุบัติเหตุระบุว่า “มีสัญญาณนาฬิกาเดิน” | การอัปเดตเอนทิตีทำให้เกิดข้อผิดพลาด | อ่านข้อมูลเกี่ยวกับเอนทิตี ตำแหน่ง และสแต็กเทรซของรายงาน |
| เขียนว่า “ตามไม่ทันแล้ว!” ในสมุดบันทึก พร้อมกับรัดด้วยยางรัด | เซิร์ฟเวอร์แบบรวมหรือแบบเฉพาะอยู่เบื้องหลัง | ตรวจสอบประสิทธิภาพขณะที่เกิดอาการแล็ก |
| เฟรมเรตต่ำโดยไม่มีการแจ้งเตือนจากเซิร์ฟเวอร์ | การแสดงผลฝั่งไคลเอ็นต์หรือการโหลดอุปกรณ์ในพื้นที่ | ตรวจสอบการตั้งค่ากราฟิกและประสิทธิภาพของไคลเอ็นต์ |
วิธีแก้ไขปัญหาการทำงานผิดพลาดของเอนทิตี้ หรือความล่าช้าของเซิร์ฟเวอร์
1. หยุดเซิร์ฟเวอร์และทำการสำรองข้อมูลทั้งหมด
สำหรับเซิร์ฟเวอร์เฉพาะ ให้ปิดเซิร์ฟเวอร์อย่างถูกต้องก่อนที่จะเปลี่ยนแปลงไฟล์โลก ปลั๊กอิน หรือการตั้งค่า คัดลอกโฟลเดอร์เซิร์ฟเวอร์ทั้งหมด รวมถึงโลก ม็อดหรือปลั๊กอิน ไฟล์การตั้งค่า และบันทึกต่างๆ ทำงานกับสำเนาหากเป็นไปได้คู่มือการแก้ไขปัญหาเบื้องต้น ของ PaperMC ยังแนะนำให้หยุดเซิร์ฟเวอร์และสำรองข้อมูลก่อนตรวจสอบ ในโหมดเล่นคนเดียว ให้ออกจากโลกและคัดลอกโฟลเดอร์บันทึกก่อนที่จะลองขั้นตอนการกู้คืน
2. ใช้ข้อความที่ถูกต้องเพื่อเลือกสาขาที่เหมาะสม
สำหรับกรณีที่เกมล่ม ให้เก็บรายงานการล่มของเกมฉบับเต็มไว้ และจดบันทึกเวอร์ชัน Minecraft, ตัวโหลดม็อด, ประเภทเอนทิตี้, มิติ และพิกัด ดูข้อความข้อยกเว้นและบรรทัดแรกๆ ที่มีประโยชน์ของสแต็กเทรซ ชื่อของม็อดหรือปลั๊กอินที่อยู่ในนั้นจะเป็นเบาะแสที่มีค่า นอกจากนี้ ให้ตรวจสอบlogs/latest.logเหตุการณ์ที่เกิดขึ้นก่อนที่เกมจะล่ม สำหรับคำเตือนเรื่องความหน่วงโดยที่เกมไม่ล่ม ให้จดบันทึกว่าเกิดขึ้นเมื่อใด เช่น ใกล้ฟาร์ม ขณะสำรวจพื้นที่ใหม่ หลังจากผู้เล่นเข้าร่วม หรือเฉพาะเมื่อเปิดใช้งานปลั๊กอินบางตัวเท่านั้น
อย่าลบไฟล์ภูมิภาคหรือลบทุกสิ่งทุกอย่างออกไปเป็นอันดับแรก การลบแบบกว้างๆ อาจลบชาวบ้าน สัตว์เลี้ยง กรอบไอเทม แท่นวางชุดเกราะ และไอเทมดรอปที่มีค่าต่างๆ ออกไป ในขณะที่สาเหตุที่แท้จริงยังคงอยู่
3. โปรไฟล์เซิร์ฟเวอร์แล็กขณะที่กำลังทำงานอยู่
หากเซิร์ฟเวอร์ใช้ Paper คู่มือการวิเคราะห์ประสิทธิภาพของ Paperแนะนำให้ใช้ Spark ซึ่งรวมอยู่ใน Paper มาตั้งแต่ Minecraft เวอร์ชัน 1.21 แล้ว เริ่มการวิเคราะห์ประสิทธิภาพในช่วงที่เกิดอาการแล็กด้วยคำสั่ง `spark` /spark profiler start --timeout 600คำสั่งนี้จะแสดงลิงก์รายงานหลังจากเก็บข้อมูลครบสิบนาที การวิเคราะห์ประสิทธิภาพในช่วงที่เซิร์ฟเวอร์ทำงานปกติอาจพลาดปริมาณงานที่ทำให้เกิดความช้าลงได้
ใช้รายงานเพื่อตรวจสอบว่าเวลาส่วนใหญ่ถูกใช้ไปกับการอัปเดตเอนทิตี้ การโหลดชิ้นส่วน ปลั๊กอิน หรือภารกิจอื่นๆ หากคุณใช้ Vanilla, Fabric หรือ Forge ให้ใช้เอกสารประกอบสำหรับเซิร์ฟเวอร์และตัวโหลดนั้นๆ แทนที่จะสันนิษฐานว่าคำสั่ง Paper หรือปลั๊กอินนั้นใช้ได้ ปัญหาเฟรมเรตของไคลเอนต์แตกต่างจากอาการแล็กของเซิร์ฟเวอร์ ดังนั้นให้เปรียบเทียบประสบการณ์ในเกมกับบันทึกของเซิร์ฟเวอร์
4. ลดภาระงานตามที่หลักฐานชี้ให้เห็น
หากการอัปเดตเอนทิตี้มีจำนวนมาก ให้ตรวจสอบฟาร์มและพื้นที่ที่มีการใช้งานหนาแน่นเพื่อหาคอกสัตว์หรือคอกมอนสเตอร์ที่แออัด กองไอเทมที่ตกหล่น รถรางในเหมือง โซ่ฮอปเปอร์ที่ยาว และเรดสโตนที่ทำงานอย่างต่อเนื่อง ลดหรือหยุดแหล่งที่มาที่สงสัยแหล่งใดแหล่งหนึ่ง จากนั้นทำกิจกรรมเดิมซ้ำอีกครั้งและเปรียบเทียบ หลีกเลี่ยงการกำหนดค่า "ขีดจำกัดเอนทิตี้" โดยพลการ: max-entitiesไม่ใช่server.propertiesการตั้งค่า มาตรฐานของ Java
สำหรับเซิร์ฟเวอร์ Java คุณสามารถทดสอบค่าที่ต่ำลงsimulation-distanceเพื่อลดระยะห่างที่เซิร์ฟเวอร์จะอัปเดตสิ่งมีชีวิตจากผู้เล่นได้view-distanceค่านี้ควบคุมปริมาณข้อมูลโลกที่เซิร์ฟเวอร์ส่งไปยังไคลเอนต์ การลดค่านี้อาจช่วยลดภาระของชิ้นส่วนแผนที่หรือเครือข่ายได้ แต่ไม่ใช่วิธีแก้ไขสิ่งมีชีวิตที่มีปัญหาโดยตรง ตรวจสอบเอกสารประกอบของซอฟต์แวร์เซิร์ฟเวอร์ของคุณและเปลี่ยนค่าทีละค่า เอกสารอ้างอิงคุณสมบัติเซิร์ฟเวอร์ ของ Paper อธิบายการตั้งค่าทั้งสองอย่าง ทำการสำรองข้อมูล หยุดเซิร์ฟเวอร์ก่อนแก้ไข เริ่มใหม่ และทดสอบอีกครั้ง
การเปลี่ยนแปลงนี้randomTickSpeedส่งผลต่อการอัปเดตบล็อกแบบสุ่ม ไม่ใช่การทำงานปกติของมอนสเตอร์ การปิดใช้งานการเขียนชิ้นส่วนแบบซิงโครนัสไม่ใช่วิธีแก้ปัญหาความหน่วงของเอนทิตี้โดยทั่วไป และอาจส่งผลต่อวิธีการบันทึกข้อมูล อย่าคัดลอกคำแนะนำเก่าๆ นั้นโดยไม่มีเหตุผลเฉพาะเจาะจงที่ระบุไว้เป็นลายลักษณ์อักษร
5. แยกเอนทิตี้ ม็อด หรือปลั๊กอินที่ทำให้เกิดข้อผิดพลาดไปไว้ในสำเนา
หากเกิดข้อผิดพลาดทุกครั้งที่โหลดพื้นที่ใดพื้นที่หนึ่ง ให้ใช้พิกัดจากรายงานเพื่อจำกัดขอบเขตการตรวจสอบ ตรวจสอบว่าไฟล์ jar ของเซิร์ฟเวอร์ เวอร์ชัน Minecraft ตัวโหลด ม็อด และปลั๊กอินเข้ากันได้หรือไม่ จากนั้นอัปเดตเฉพาะส่วนประกอบที่ผู้ดูแลระบุว่ารองรับเวอร์ชันนั้น ๆ เท่านั้น หากปลั๊กอินปรากฏใน stack trace ให้ทดสอบโดยปิดใช้งานปลั๊กอินนั้นในสำเนา PaperMC ได้ระบุวิธีการค้นหาแบบไบนารีเพื่อจำกัดความขัดแย้งของปลั๊กอิน เก็บปลั๊กอินไลบรารีที่ขึ้นอยู่ด้วยกันในขณะทดสอบ สำหรับไฟล์ jar ของเซิร์ฟเวอร์ Vanilla ให้ใช้คำแนะนำการตั้งค่าเซิร์ฟเวอร์ Minecraft Java อย่างเป็นทางการและจับคู่ซอฟต์แวร์เซิร์ฟเวอร์กับโลกที่คุณกำลังทดสอบ
หากยังมีเอนทิตี้เพียงตัวเดียวที่ทำให้โลกที่คัดลอกมาเกิดข้อผิดพลาด ให้สอบถามผู้ดูแลม็อดหรือปลั๊กอินที่รับผิดชอบเพื่อขอวิธีแก้ไขเฉพาะเวอร์ชัน หากเป็นทางเลือกสุดท้าย ให้ใช้เครื่องมือแก้ไขภูมิภาคที่มีชื่อเสียงกับสำเนาเพื่อลบเฉพาะเอนทิตี้ที่ระบุ โดยปฏิบัติตามเอกสารประกอบของเครื่องมือดังกล่าว ตรวจสอบให้แน่ใจว่าโลกเปิดและทำงานได้อย่างถูกต้องก่อนที่จะนำไฟล์บันทึกต้นฉบับกลับไปใช้ใหม่
รักษาความถูกต้องของการแก้ไขให้สามารถตรวจสอบได้
หลังจากทำการเปลี่ยนแปลงแต่ละครั้ง ให้ทำซ้ำเงื่อนไขที่เคยทำให้เกิดคำเตือนหรือข้อผิดพลาด และตรวจสอบบันทึกอีกครั้ง สำหรับปัญหาความหน่วงของเซิร์ฟเวอร์ ให้เปรียบเทียบผลลัพธ์จากโปรไฟล์เลอร์และสังเกตว่าการเคลื่อนไหว การโต้ตอบกับบล็อก และพฤติกรรมของมอนสเตอร์ดีขึ้นหรือไม่ สำหรับข้อผิดพลาดที่เกิดจากเอนทิตีที่มีเวลานับ ให้ตรวจสอบว่าสามารถโหลดส่วนเดียวกันได้โดยไม่ทำให้เกิดรายงานข้อผิดพลาดอีก หากการเปลี่ยนแปลงใดๆ ไม่ทำให้เกิดความแตกต่างที่วัดได้ ให้กู้คืนข้อมูลสำรองหรือย้อนกลับการตั้งค่าก่อนที่จะลองวิธีต่อไป
กุญแจสำคัญในการแก้ไขข้อผิดพลาด Entity Ticking ใน Minecraftคือการแยกเอนทิตีที่ล้มเหลวออกจากลูปการประมวลผลที่ทำงานหนักเกินไป บันทึกรายงาน ป้องกันโลก และปล่อยให้บันทึกหรือโปรไฟล์เลอร์ตรวจสอบว่าขั้นตอนต่อไปคือการล้างเอนทิตี การปรับแต่งเซิร์ฟเวอร์ หรือการแก้ไขม็อด/ปลั๊กอิน