การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ Minecraft

การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ Minecraft
ในบล็อกของเราเรามีอยู่แล้ว บอก, วิธีสร้างเซิร์ฟเวอร์ Minecraft ของคุณเอง แต่ผ่านไป 5 ปีแล้วและมีการเปลี่ยนแปลงมากมาย เรากำลังแบ่งปันวิธีปัจจุบันในการสร้างและเพิ่มประสิทธิภาพส่วนเซิร์ฟเวอร์ของเกมยอดนิยมดังกล่าวให้กับคุณ

ตลอดระยะเวลา 9 ปี (นับตั้งแต่วันที่วางจำหน่าย) Minecraft ได้รับแฟน ๆ และผู้เกลียดชังจำนวนมากทั้งจากผู้เล่นทั่วไปและคนเกินบรรยาย แนวคิดที่เรียบง่ายของโลกที่ทำจากบล็อกได้พัฒนาจากรูปแบบความบันเทิงที่เรียบง่ายมาเป็นสื่อสากลสำหรับการสื่อสารและสร้างวัตถุต่างๆ จากโลกแห่งความเป็นจริง

นอกจากการก่อสร้างแล้ว ตัวเกมยังมีความสามารถในการสร้างอีกด้วย ตรรกะซึ่งอนุญาตให้คุณใช้อัลกอริธึมเต็มรูปแบบภายใน Minecraft YouTube เต็มไปด้วยวิดีโอที่น่าประทับใจมาก ซึ่งผู้คนได้ใช้ความพยายามอย่างมากและใช้เวลามากมายในการสร้างสำเนาของอุปกรณ์อิเล็กทรอนิกส์ชิ้นนั้นหรือสร้างสำเนาที่มีรายละเอียด ที่มีอยู่เดิม и สวม โครงสร้างทางสถาปัตยกรรม ทุกสิ่งถูกจำกัดด้วยจินตนาการของนักเล่นเกมและความเป็นไปได้ของจักรวาลแห่งเกมเท่านั้น


แต่อย่าพูดคุยเพิ่มเติมเกี่ยวกับสิ่งที่ผู้เล่นสร้างขึ้น แต่ลองดูที่ส่วนเซิร์ฟเวอร์ของแอปพลิเคชันและเน้นปัญหา (บางครั้งก็ซับซ้อนมาก) ที่อาจเกิดขึ้นระหว่างการทำงานภายใต้โหลด รีบจับจองกันได้เลยว่าเราจะพูดถึงเฉพาะ Java Edition เท่านั้น

ประเภทของเซิร์ฟเวอร์

ตัวเลือกที่ง่ายที่สุดคือเซิร์ฟเวอร์ที่สร้างไว้ในไคลเอนต์เกม เราสร้างโลกขึ้นมา กดปุ่มเดียว และเซิร์ฟเวอร์ก็สามารถเข้าถึงได้ผ่านเครือข่ายท้องถิ่น ตัวเลือกนี้ไม่สามารถทนต่อภาระร้ายแรงได้ดังนั้นเราจะไม่พิจารณาด้วยซ้ำ

วานิลลา

Mojang Studios เผยแพร่ส่วนเซิร์ฟเวอร์ของเกมเป็นแอปพลิเคชัน Java ฟรี บนเว็บไซต์อย่างเป็นทางการ. สิ่งนี้ช่วยให้คุณสร้างของคุณเองได้ เซิร์ฟเวอร์เฉพาะ และโลกส่วนตัวทำให้สามารถเชื่อมต่อได้จากทุกที่บนโลก สำหรับผู้ที่ทำสิ่งนี้เป็นครั้งแรกมีความยิ่งใหญ่ กวดวิชามีอยู่ใน Wiki เกมที่เกี่ยวข้อง

วิธีนี้มีข้อเสียเปรียบร้ายแรงประการหนึ่ง กล่าวคือ การขาดความสามารถนอกกรอบในการเชื่อมต่อปลั๊กอินที่ขยายฟังก์ชันการทำงานของเซิร์ฟเวอร์ และไม่เพียงแต่ทำให้กระบวนการต่างๆ เป็นแบบอัตโนมัติเท่านั้น แต่ยังช่วยเพิ่มประสิทธิภาพการทำงานอีกด้วย นอกจากนี้ เซิร์ฟเวอร์อย่างเป็นทางการยังมีการใช้ RAM ค่อนข้างมากสำหรับผู้เล่นที่เชื่อมต่อแต่ละคน

บักกิต

แอปพลิเคชันเซิร์ฟเวอร์ที่สร้างขึ้นโดยผู้ที่ชื่นชอบตามเวอร์ชัน Vanilla บักกิต ขยายขีดความสามารถของเกมอย่างมีนัยสำคัญโดยรองรับปลั๊กอินและ mods (การดัดแปลง) ไม่เพียงแต่อนุญาตให้เพิ่มบล็อกใหม่ให้กับการเล่นเกมเท่านั้น แต่ยังรวมถึงการดำเนินการต่างๆ ที่ไม่สามารถเข้าถึงได้ด้วยซอฟต์แวร์วานิลลา สิ่งที่น่าสนใจคือแอปพลิเคชันนี้ต้องการหน่วยความจำน้อยกว่ามาก

การติดตั้ง Bukkit ไม่ใช่เรื่องยาก คำแนะนำที่เกี่ยวข้องอยู่ในทรัพยากร เกมพีเดีย. แต่มันก็ไม่สมเหตุสมผลเลย เนื่องจากตั้งแต่ปี 2014 ทีม Bukkit ได้ยุบวงไปแล้ว ผู้พัฒนาโครงการก็กลายเป็นพนักงานของ Mojang Studios และ ที่เก็บ ถูกทอดทิ้ง ดังนั้น Bukkit จึงตายไปแล้ว และเป็นเรื่องสมเหตุสมผลที่จะให้ความสนใจกับสองโครงการถัดไป

SpigotMC

เพื่อให้ชีวิตของนักพัฒนาปลั๊กอินง่ายขึ้น จำเป็นต้องมี API เพื่อโต้ตอบกับโลกของเกม นี่เป็นปัญหาที่ผู้สร้างแก้ไขอย่างแน่นอน หัวจุกโดยนำแกน Bukkit มาทำใหม่เพื่อให้ได้ความน่าเชื่อถือและประสิทธิภาพที่ดีขึ้น แต่ถึงอย่างไร, พื้นที่เก็บข้อมูล Git โครงการถูกบล็อกเนื่องจาก Digital Millennium Copyright Act (DMCA) และไม่สามารถดาวน์โหลดซอร์สโค้ดจากที่นั่นได้

ปัจจุบัน SpigotMC ได้รับการพัฒนาและใช้งานอย่างแข็งขัน รองรับปลั๊กอินทั้งหมดที่สร้างขึ้นสำหรับ Bukkit แต่ไม่สามารถใช้งานร่วมกับปลั๊กอินรุ่นเก่าได้ เพื่อหลีกเลี่ยง DMCA Takedown จึงได้มีการคิดค้นวิธีการอันหรูหราที่เรียกว่า BuildTools เครื่องมือนี้ช่วยลดความจำเป็นในการแจกจ่ายแอปพลิเคชันที่คอมไพล์แล้ว และช่วยให้ผู้ใช้สามารถคอมไพล์ Spigot, CraftBukkit และ Bukkit จากซอร์สโค้ดได้ ทั้งหมดนี้ทำให้การแบน DMCA ไร้ประโยชน์

เปเปอร์เอ็มซี

ทุกอย่างดูเท่ และ Spigot ก็กลายเป็นตัวเลือกที่ยอดเยี่ยม แต่นี่ยังไม่เพียงพอสำหรับผู้ที่ชื่นชอบบางคน และพวกเขาสร้าง Spigot ทางแยกของตัวเองขึ้นมา “บนสเตียรอยด์” บน หน้าโครงการ ข้อได้เปรียบที่สำคัญคือ "มันเร็วแบบโง่ๆ" ที่พัฒนา ชุมชน ช่วยให้คุณแก้ไขปัญหาที่เกิดขึ้นได้อย่างรวดเร็ว และ API แบบขยายช่วยให้คุณสร้างปลั๊กอินที่น่าสนใจได้ คุณสามารถเปิด PaperMC ได้ด้วยคำสั่งง่ายๆ เพียงคำสั่งเดียว เอกสาร.

PaperMC มีความเข้ากันได้ดีเยี่ยม ดังนั้นปลั๊กอินที่เขียนขึ้นสำหรับ SpigotMC จึงสามารถทำงานบน PaperMC ได้อย่างง่ายดาย แต่ไม่มีการสนับสนุนอย่างเป็นทางการ มีความเข้ากันได้แบบย้อนหลังกับ SpigotMC ด้วย ตอนนี้เราได้แสดงรายการตัวเลือกต่างๆ สำหรับการสร้างเซิร์ฟเวอร์แล้ว มาดูปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้นกันดีกว่า

ปัญหาและแนวทางแก้ไข

สิ่งสำคัญที่คุณต้องเข้าใจคือทุกสิ่งที่เกี่ยวข้องกับการประมวลผลโลกของเกมจะถูกประมวลผลบนคอร์ประมวลผลเดียวของเซิร์ฟเวอร์จริงเท่านั้น ดังนั้นหากจู่ๆ คุณมีเซิร์ฟเวอร์ที่ยอดเยี่ยมซึ่งมีแกนประมวลผลหลายสิบคอร์ ก็จะมีการโหลดเพียงคอร์เดียวเท่านั้น คนอื่นๆ ทั้งหมดจะไม่ได้ใช้งานจริง นี่คือสถาปัตยกรรมของแอปพลิเคชัน และคุณไม่สามารถทำอะไรกับมันได้ ดังนั้นเมื่อเลือกเซิร์ฟเวอร์ คุณไม่ควรใส่ใจกับจำนวนคอร์ แต่ต้องคำนึงถึงความถี่สัญญาณนาฬิกาด้วย ยิ่งสูงประสิทธิภาพก็จะยิ่งดีขึ้นเท่านั้น

ในเรื่องความจุ RAM เราควรดำเนินการตามตัวบ่งชี้ต่อไปนี้:

  • จำนวนผู้เล่นที่วางแผนไว้
  • จำนวนโลกที่วางแผนไว้บนเซิร์ฟเวอร์
  • ขนาดของโลกแต่ละใบ

ควรจำไว้ว่าแอปพลิเคชัน Java ต้องการ RAM สำรองเสมอ หากคุณคาดว่าจะใช้หน่วยความจำ 8 กิกะไบต์ จริงๆ แล้วคุณต้องมี 12 ตัวเลขนั้นสัมพันธ์กัน แต่สาระสำคัญไม่เปลี่ยนแปลง

ในการเริ่มต้นส่วนเซิร์ฟเวอร์ เราขอแนะนำให้ใช้แฟล็กที่ระบุในบทความ ปรับแต่ง JVM – G1GC Garbage Collector Flags สำหรับ Minecraft. “มนต์ดำ” นี้ช่วยให้เซิร์ฟเวอร์กำหนดค่า “ตัวรวบรวมขยะ” ได้อย่างถูกต้องและเพิ่มประสิทธิภาพการใช้ RAM คุณไม่ควรจัดสรรหน่วยความจำเกินกว่าที่เซิร์ฟเวอร์ใช้งานจริงในช่วงที่มีผู้เล่นหลั่งไหลเข้ามาถึงจุดสูงสุด

การสร้างแผนที่บล็อก

“คุณคิดว่าดวงจันทร์มีอยู่จริงเมื่อคุณมองมันเท่านั้น?” (Albert Einstein)

เซิร์ฟเวอร์ใหม่ที่สมบูรณ์ ทันทีที่ผู้เล่นเชื่อมต่อสำเร็จเป็นครั้งแรก ตัวละครในเกมจะปรากฏที่จุดรวมตัวทั่วไป (วางไข่) นี่เป็นสถานที่เดียวที่โลกของเกมถูกสร้างไว้ล่วงหน้าโดยเซิร์ฟเวอร์ ในขณะเดียวกัน ส่วนของไคลเอนต์จะดูการตั้งค่า และพารามิเตอร์หลักคือระยะการวาด วัดเป็นชิ้น (พื้นที่แผนที่คือ 16×16 และสูง 256 บล็อก) มีกี่ชิ้นที่ระบุว่ามีกี่ชิ้นที่จะถูกร้องขอจากเซิร์ฟเวอร์

เซิร์ฟเวอร์จัดเก็บแผนที่โลกทั่วโลก และหากยังไม่มีบล็อกที่สร้างขึ้น ณ ตำแหน่งที่ปรากฏของตัวละครในเกม เซิร์ฟเวอร์จะสร้างบล็อกเหล่านั้นแบบไดนามิกและจัดเก็บไว้ สิ่งนี้ไม่เพียงแต่ต้องใช้ทรัพยากรคอมพิวเตอร์ขนาดใหญ่เท่านั้น แต่ยังเพิ่มขนาดของแผนที่โลกอย่างต่อเนื่องอีกด้วย บนหนึ่งในเซิร์ฟเวอร์อนาธิปไตยที่เก่าแก่ที่สุด 2b2t (2builders2tools) ขนาดของแผนที่เกิน 8 Tb แล้ว และขอบเขตของโลกอยู่ที่ประมาณ 30 ล้านบล็อก มีเรื่องราวมากมายที่เกี่ยวข้องกับเซิร์ฟเวอร์นี้ และสมควรได้รับบทความในซีรีส์ของตัวเอง

การสร้างโลกโดยมีผู้เล่นเพียงคนเดียวไม่ใช่ปัญหา การสร้างโลกที่มีผู้เล่นหลายร้อยคนจะทำให้เซิร์ฟเวอร์ช้าลงเล็กน้อยในช่วงเวลาสั้นๆ หลังจากนั้นโหลดจะลดลง การสร้างโลกที่ระยะการเรนเดอร์ไคลเอนต์ประมาณหนึ่งพันผู้เล่นนั้นสามารถ "ทิ้ง" เซิร์ฟเวอร์และโยนไคลเอนต์ทั้งหมดออกจากเซิร์ฟเวอร์เนื่องจากการหมดเวลา

ในซอฟต์แวร์เซิร์ฟเวอร์จะมีค่าเช่น TPS (ติ๊กต่อเซิร์ฟเวอร์ - ติ๊กต่อวินาที) โดยปกติ 1 รอบสัญญาณนาฬิกาจะเท่ากับ 50 มิลลิวินาที (1 วินาทีของโลกแห่งความเป็นจริงเท่ากับ 20 ขีดของโลกในเกม) หากการประมวลผลของหนึ่งขีดเพิ่มขึ้นเป็น 60 วินาที แอปพลิเคชันเซิร์ฟเวอร์จะถูกปิด ส่งผลให้ผู้เล่นทั้งหมดถูกไล่ออก

วิธีแก้ไขคือการจำกัดโลกให้อยู่ในพิกัดที่กำหนดและดำเนินการสร้างบล็อกเบื้องต้น ดังนั้นเราจึงลบความจำเป็นในการสร้างไดนามิกระหว่างเกม และเซิร์ฟเวอร์จะต้องอ่านแผนที่ที่มีอยู่เท่านั้น ปัญหาทั้งสองนี้สามารถแก้ไขได้ด้วยปลั๊กอินตัวเดียว ชายแดนโลก.

วิธีที่ง่ายที่สุดคือการกำหนดขอบเขตโลกในรูปแบบของวงกลมที่สัมพันธ์กับจุดวางไข่ (แม้ว่าคุณจะสร้างมันขึ้นมาเป็นรูปใดก็ได้ก็ตาม) ด้วยคำสั่งเดียว:

/wb set <радиус в блоках> spawn

หากตัวละครของผู้เล่นพยายามข้ามพรมแดน เขาจะถูกผลักกลับไปหลายช่วงตึก หากทำหลายครั้งภายในระยะเวลาที่จำกัด ผู้กระทำผิดจะถูกบังคับให้เคลื่อนย้ายไปยังจุดเกิด การสร้างโลกล่วงหน้านั้นทำได้ง่ายกว่าด้วยคำสั่ง:

/wb fill

เนื่องจากการกระทำนี้อาจส่งผลกระทบต่อผู้เล่นบนเซิร์ฟเวอร์ โปรดยืนยัน:

/wb confirm

โดยรวมแล้ว ใช้เวลาประมาณ 5000 ชั่วโมงในการสร้างโลกที่มีรัศมี 40 บล็อก (~2 พันล้านบล็อก) บนโปรเซสเซอร์ Intel® Xeon® Gold 6240 ดังนั้น หากคุณต้องการสร้างแผนที่ที่ใหญ่ขึ้นล่วงหน้า โปรดทราบว่า กระบวนการนี้จะใช้เวลาพอสมควร และ TPS ของเซิร์ฟเวอร์จะลดลงอย่างมาก นอกจากนี้ โปรดจำไว้ว่าแม้แต่รัศมี 5000 บล็อกก็ยังต้องการพื้นที่ดิสก์ประมาณ 2 GB

แม้ว่าปลั๊กอินเวอร์ชันล่าสุดจะได้รับการพัฒนาสำหรับ Minecraft เวอร์ชัน 1.14 แต่ก็มีการทดลองพบว่าทำงานได้ดีกับเวอร์ชันต่อๆ ไป มีรายการคำสั่งทั้งหมดพร้อมคำอธิบาย บนฟอรัมปลั๊กอิน.

บล็อกปัญหา

มีบล็อกมากมายใน Minecraft อย่างไรก็ตาม เราต้องการดึงดูดความสนใจของผู้อ่านไปยังบล็อกเช่น ทีเอ็นที. ตามชื่อเลย บล็อกนี้เป็นวัตถุระเบิด (หมายเหตุบรรณาธิการ - นี่คือไอเท็มเกมของโลกเสมือนจริง และไอเท็มนี้ไม่มีอะไรเกี่ยวกับวัตถุระเบิดจริง). ลักษณะเฉพาะของมันคือในขณะที่เปิดใช้งานแรงโน้มถ่วงจะเริ่มกระทำกับมัน สิ่งนี้จะบังคับให้เซิร์ฟเวอร์คำนวณพิกัดทั้งหมดหากในขณะนี้บล็อกเริ่มลดลง

หากมีบล็อก TNT หลายบล็อก การระเบิดของบล็อกหนึ่งจะทำให้เกิดการระเบิดและการกระตุ้นแรงโน้มถ่วงในบล็อกใกล้เคียง โดยกระจายไปในทุกทิศทาง กลไกที่สวยงามทั้งหมดนี้บนฝั่งเซิร์ฟเวอร์ดูเหมือนว่าจะมีการดำเนินการมากมายในการคำนวณวิถีของแต่ละบล็อก เช่นเดียวกับการโต้ตอบกับบล็อกข้างเคียง งานนี้เป็นงานที่ใช้ทรัพยากรมาก ซึ่งใครๆ ก็สามารถตรวจสอบได้อย่างง่ายดาย สร้างและระเบิดลูกบาศก์จากบล็อก TNT ที่มีขนาดอย่างน้อย 30x30x30 และถ้าคุณคิดว่าคุณมีคอมพิวเตอร์สำหรับเล่นเกมที่ดีและทรงพลัง แสดงว่าคุณคิดผิดมาก 😉

/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt

การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ Minecraft
“การทดลอง” ที่คล้ายกันบนเซิร์ฟเวอร์ที่ใช้ Intel® Xeon® Gold 6240 ส่งผลให้ TPS ลดลงอย่างมากและโหลด CPU 80% ในช่วงเวลาการระเบิดของบล็อกทั้งหมด ดังนั้นหากผู้เล่นคนใดสามารถทำได้ ปัญหาด้านประสิทธิภาพจะส่งผลกระทบต่อผู้เล่นทุกคนบนเซิร์ฟเวอร์

ตัวเลือกที่ยากยิ่งขึ้น - ขอบคริสตัล. หาก TNT ระเบิดตามลำดับ Edge Crystals จะระเบิดทั้งหมดพร้อมกัน ซึ่งตามทฤษฎีแล้วสามารถหยุดการทำงานของแอปพลิเคชันเซิร์ฟเวอร์ได้อย่างสมบูรณ์

สถานการณ์นี้สามารถหลีกเลี่ยงได้โดยการห้ามการใช้บล็อกเหล่านี้ในโลกของเกมโดยสมบูรณ์เท่านั้น เช่น การใช้ปลั๊กอิน เวิลด์การ์ด. โปรดทราบว่าปลั๊กอินนี้ใช้งานไม่ได้หากไม่มีปลั๊กอินอื่น WorldEdit. ดังนั้นให้ติดตั้ง WorldEdit ก่อน จากนั้นจึงติดตั้ง WorldGuard

ข้อสรุป

การจัดการเซิร์ฟเวอร์เกมอย่างเหมาะสมไม่ใช่เรื่องง่าย ความยากและประสิทธิภาพที่ลดลงจะรอคุณอยู่ทุกเทิร์น โดยเฉพาะอย่างยิ่งหากคุณไม่คำนึงถึงกลไกการเล่นเกมด้วย เป็นไปไม่ได้ที่จะคาดการณ์ทุกสิ่ง เพราะบางครั้งผู้เล่นอาจใช้ความคิดสร้างสรรค์อย่างมากในการพยายามบังคับให้เซิร์ฟเวอร์ทำบางสิ่งโดยไม่ได้ตั้งใจ ความสมดุลที่เหมาะสมระหว่างความเสี่ยงและข้อจำกัดที่กำหนดไว้เท่านั้นที่จะทำให้เซิร์ฟเวอร์ทำงานอย่างต่อเนื่องและไม่ลดประสิทธิภาพลงเหลือค่าวิกฤต

ในระหว่างการกักกัน พนักงานของเราบางคนพลาดสำนักงานโปรดและตัดสินใจสร้างสำนักงานขึ้นมาใหม่ภายใน Minecraft คุณยังมีโอกาสมาเยี่ยมเยียนเราโดยไม่ต้องเสี่ยงต่อสุขภาพหรือเสียเวลาบนท้องถนน

เพื่อดำเนินการนี้ เราขอเชิญทุกคนมาที่เซิร์ฟเวอร์ของเรา minecraft.selectel.ru (ไคลเอนต์เวอร์ชัน 1.15.2) ซึ่งศูนย์ข้อมูล Tsvetochnaya-1 และ Tsvetochnaya-2 ถูกสร้างขึ้นใหม่ อย่าลืมตกลงที่จะดาวน์โหลดแหล่งข้อมูลเพิ่มเติม เนื่องจากจำเป็นสำหรับการแสดงสถานที่บางแห่งอย่างถูกต้อง

ภารกิจ รหัสส่งเสริมการขาย ไข่อีสเตอร์ และการสื่อสารที่น่าพึงพอใจรอคุณอยู่

ที่มา: will.com

เพิ่มความคิดเห็น