แก้ไขแล้ว ปัญหา tps ตกใน Minecraft Server เกิดจากสาเหตุอะไร ?

Pune007

นักปราบมอนสเตอร์
มายคราฟรุ่น
Minecraft Java Edition
มายคราฟเวอร์ชัน
1.16.5
ปัญหา tps ตกใน Minecraft Server เกิดจากสาเหตุอะไร ? :block-of-redstone:
พอดีวันนี้ผมมีปัญหา tps ตก มีผู้เล่นปรมาณ 5 - 15คน มี 35 plugin
ใช้ paper-1.16.5-625.jar ในการเปิดเซิฟ Version 1.16.5
สเปค Vps
OS linux ubuntu
CPU intel xeon x5670 (3 core)
ram 4 GB
SSD 48GB

tps ตกเหลือ 11 - 15
และก็มีข้อความขึ้นใน console ว่า
[12:07:33 WARN]: Can't keep up! Is the server overloaded? Running 11495ms or 229 ticks behind

รายงาน
 
แก้ไขล่าสุด:
คำตอบ
อาการ TPS Drop มีหลายสาเหตุครับ แต่ปัญหาที่พบส่วนใหญ่จะเป็นที่ Ram ไม่พอกับความต้องการของเซิร์ฟเวอร์ ตัวอย่างเช่น ปลั้กอินเยอะเกินไป
ลองเช็คดูครับว่าเรามีปลั้กอินจำพวกนี้มากหรือการกระทำต่างๆ ในเซิร์ฟอะไรบ้าง?

  • ปลั้กอินจำพวกที่ต้องอ่านไฟล์ตลอดเวลา: ส่วนใหญ่จะเกี่ยวกับปลั้กอินที่เป็นการกำหนดโซนต่างๆ เช่น World Guard หรือโพรเทค เวลายิ่งพวกนี้มีเยอะขึ้นมันจะยิ่งใช้ Ram มากขึ้นครับ
  • ปลั้กอินขนาดใหญ่ที่มีลูกเล่นเยอะๆ: สังเกตได้จากเวลาเปิดเซิร์ฟเลยครับ ตัวไหนโหลดช้า โหลดนานๆ ตัวนั้นกินทรัพยากรมากแน่นอน
  • มีการประมวลผลมากเกินไป: ใช้ปลั้กอินที่ต้องโหลดมากๆ ในทีเดียว เช่น World Edit ยิ่งแก้ไขอะไรขนาดใหญ่ๆ จะยิ่งแล็คมากขึ้น สมมุติว่าเราไปลบพื้นที่ออก...
แนะนำให้เพิ่ม RAM ค่ะเพราะว่ามี Plugin เยอะเลยต้องใช้ประมวลผลเยอะตามมา ถ้ามีผู้เล่นมากขึ้นการประมวลผลก็จะเยอะขึ้นด้วยเช่นกันค่ะ
 
แนะนำให้เพิ่ม RAM ค่ะเพราะว่ามี Plugin เยอะเลยต้องใช้ประมวลผลเยอะตามมา ถ้ามีผู้เล่นมากขึ้นการประมวลผลก็จะเยอะขึ้นด้วยเช่นกันค่ะ
ขอบคุณครับ :)
 
อาการ TPS Drop มีหลายสาเหตุครับ แต่ปัญหาที่พบส่วนใหญ่จะเป็นที่ Ram ไม่พอกับความต้องการของเซิร์ฟเวอร์ ตัวอย่างเช่น ปลั้กอินเยอะเกินไป
ลองเช็คดูครับว่าเรามีปลั้กอินจำพวกนี้มากหรือการกระทำต่างๆ ในเซิร์ฟอะไรบ้าง?

  • ปลั้กอินจำพวกที่ต้องอ่านไฟล์ตลอดเวลา: ส่วนใหญ่จะเกี่ยวกับปลั้กอินที่เป็นการกำหนดโซนต่างๆ เช่น World Guard หรือโพรเทค เวลายิ่งพวกนี้มีเยอะขึ้นมันจะยิ่งใช้ Ram มากขึ้นครับ
  • ปลั้กอินขนาดใหญ่ที่มีลูกเล่นเยอะๆ: สังเกตได้จากเวลาเปิดเซิร์ฟเลยครับ ตัวไหนโหลดช้า โหลดนานๆ ตัวนั้นกินทรัพยากรมากแน่นอน
  • มีการประมวลผลมากเกินไป: ใช้ปลั้กอินที่ต้องโหลดมากๆ ในทีเดียว เช่น World Edit ยิ่งแก้ไขอะไรขนาดใหญ่ๆ จะยิ่งแล็คมากขึ้น สมมุติว่าเราไปลบพื้นที่ออก ในเกมจะเกิดการประมวลผลหลายอย่างในจำนวนมากๆ เช่น แสง
    แนะนำให้ลบที่จะนิดครับ
  • Chunks โหลดมากเกินไป: 1 Chunks มีขนาด 16x16x256 นั้นหมายความว่า มีบล็อคทำหมดเกือบ 65,536 โหลดขึ้นมา ยิ่งผู้เล่นเยอะ แล้วต่างคนต่างไปเปิดแมพ แล้ว Ram ไม่พอเซิร์ฟเวอร์แล็คแน่นอน (ดูจากต้นโพสต์ข้อนี้น่าจะไม่มีปัญหา เพราะคนเล่นไม่เกิน 40+)

วิธีแก้ปัญหาเบื้องต้น

  • ใช้โค๊ดรันเซิร์ฟเวอร์ที่เข้ากับตัว Java

    โค้ด:
    java -Xms[แรม]G -Xmx[แรม]G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=50 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AggressiveOpts -jar paperspigot.jar
    ใช้โค๊ดตัวนี้จะแก้อาการ Overloaded ได้ครับ หรือจะลองศึกษาเพิ่มเติมได้ที่ลิงก์นี้เลยครับ
  • ถ้าเป็นไปได้ไม่อยากให้ใช้ปลั้กอินจำพวก Anticheat เนื่องจากมันต้องประมวลผลตลอดเวลา
  • ปรับแก้ไข View Distance ใน server properties ให้มีขนาดน้อยลง
  • Restart เซิร์ฟเวอร์ทุกวัน เพื่อเคลียร์เรื่องไฟล์ตกค้าง การประมวลผลที่ไม่จำเป็น
  • ห้าม Reload เซิร์ฟบ่อย เนื่องจากจะยิ่งสร้างการประมวลผลที่ค้างมากขึ้น
  • ใช้ปลั้กอิน FastAsync แทนที่พวก World edit
  • ลดจำนวนปลั้กอินให้น้อยลง
 
แก้ไขล่าสุด:
อาการ TPS Drop มีหลายสาเหตุครับ แต่ปัญหาที่พบส่วนใหญ่จะเป็นที่ Ram ไม่พอกับความต้องการของเซิร์ฟเวอร์ ตัวอย่างเช่น ปลั้กอินเยอะเกินไป
ลองเช็คดูครับว่าเรามีปลั้กอินจำพวกนี้มากหรือการกระทำต่างๆ ในเซิร์ฟอะไรบ้าง?

  • ปลั้กอินจำพวกที่ต้องอ่านไฟล์ตลอดเวลา: ส่วนใหญ่จะเกี่ยวกับปลั้กอินที่เป็นการกำหนดโซนต่างๆ เช่น World Guard หรือโพรเทค เวลายิ่งพวกนี้มีเยอะขึ้นมันจะยิ่งใช้ Ram มากขึ้นครับ
  • ปลั้กอินขนาดใหญ่ที่มีลูกเล่นเยอะๆ: สังเกตได้จากเวลาเปิดเซิร์ฟเลยครับ ตัวไหนโหลดช้า โหลดนานๆ ตัวนั้นกินทรัพยากรมากแน่นอน
  • มีการประมวลผลมากเกินไป: ใช้ปลั้กอินที่ต้องโหลดมากๆ ในทีเดียว เช่น World Edit ยิ่งแก้ไขอะไรขนาดใหญ่ๆ จะยิ่งแล็คมากขึ้น สมมุติว่าเราไปลบพื้นที่ออก ในเกมจะเกิดการประมวลผลหลายอย่างในจำนวนมากๆ เช่น แสง
    แนะนำให้ลบที่จะนิดครับ
  • Chunks โหลดมากเกินไป: 1 Chunks มีขนาด 16x16x256 นั้นหมายความว่า มีบล็อคทำหมดเกือบ 65,536 โหลดขึ้นมา ยิ่งผู้เล่นเยอะ แล้วต่างคนต่างไปเปิดแมพ แล้ว Ram ไม่พอเซิร์ฟเวอร์แล็คแน่นอน (ดูจากต้นโพสต์ข้อนี้น่าจะไม่มีปัญหา เพราะคนเล่นไม่เกิน 40+)

วิธีแก้ปัญหาเบื้องต้น

  • ใช้โค๊ดรันเซิร์ฟเวอร์ที่เข้ากับตัว Java

    โค้ด:
    java -Xms[แรม]G -Xmx[แรม]G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=50 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AggressiveOpts -jar paperspigot.jar
    ใช้โค๊ดตัวนี้จะแก้อาการ Overloaded ได้ครับ หรือจะลองศึกษาเพิ่มเติมได้ที่
    ลิงก์นี้เลยครับ
  • ถ้าเป็นไปได้ไม่อยากให้ใช้ปลั้กอินจำพวก Anticheat เนื่องจากมันต้องประมวลผลตลอดเวลา
  • ปรับแก้ไข View Distance ใน server properties ให้มีขนาดน้อยลง
  • Restart เซิร์ฟเวอร์ทุกวัน เพื่อเคลียร์เรื่องไฟล์ตกค้าง การประมวลผลที่ไม่จำเป็น
  • ห้าม Reload เซิร์ฟบ่อย เนื่องจากจะยิ่งสร้างการประมวลผลที่ค้างมากขึ้น
  • ใช้ปลั้กอิน FastAsync แทนที่พวก World edit
  • ลดจำนวนปลั้กอินให้น้อยลง
ขอบคุณครับ จะนำไปปรับใช้ครับ :)
 
Top