News zur Severtechnik
#1
Bug  News zur Severtechnik
Hallo zusammen!

Heute gibt es mal News aus dem Technikbereich ?

Historie
Blockminers hatte schon immer den Charme, seiner Kreativität freien Lauf lassen zu können.
Unser Hauptmerkmal ist das kreative Bauen mit Armorstands, Köpfen, Itemframes, Maps, Datapacks und Schildern.

Aus diesem Grund wurden in den letzten Jahren einige Änderungen vorgenommen, die das Spielerlebnis erheblich verbessern:

1. Einführung der HDB
Alte User kennen vielleicht noch die Kopf-Gutschriften? Vor der Einführung der HDB hat jeder Kopf 800 Coins gekostet, sowie eine Vervielfältigung eines vorhandenen Kopfes 400 Coins. Durch die Einführung der HDB sind Köpfe nun deutlich günstiger (zwischen 50 und 200 Coins). Das hat natürlich zu einer extremen Zunahme von Köpfen geführt.

2. Einführung des EditArmorStands Panels
Alte User kennen vielleicht noch die alten Commands für EAS? Vor der Einführung des EAS Panels mussten Armorstands mühsam per Chat-Commands angepasst werden. Die Erstellung von Armorstand Kreationen war eher gering.
Durch das intuitive EAS-Panel war es nun für alle Spieler sehr einfach möglich, Armorstand Kreationen zu erstellen.

3. Einführung von Datapacks
Seit Mai 2020 könnt ihr auf Blockminers mit der Gutschrift “Datapack” für 3.000 Coins ein auf minecraft-heads.com bereitgestelltes Datapack setzen zu lassen.
Hierbei werden fertige Armorstand Kreationen direkt als Verbund gesetzt und ein mühsames “kopieren” entfällt. Es gibt Datapacks mit einigen wenigen Armorstands, bishin zu mehreren hundert Armorstands.

Performance
Es gibt wenige Minecraft Server, die bereits 11 Jahre bestehen und noch weniger Server, die ein und die selbe Bauwelt über die Jahre hinweg bereitstellen.
Um die Bauwelt / den Server in die jeweils aktuelle Minecraft Version upzudaten waren in der Vergangenheit immer wieder Anpassungen Server- und Userseitig nötig.

Um nur einige Beispiele zu nennen:

1. Update 1.13: Anpassung sämtlicher Commandblöcke
2. Update 1.15: Redstone Anpassungen und Verschärfung der Regeln
3. Update 1.18: Upgrade der Bauwelt auf Bauhöhe -64
4. Update 1.20: Umstellung des MC Servers auf Purpur (Performance Fork von Paper)
5. Update 1.21.1: Erneute Anpassung von über 1000 CommandBlöcken
6. Coming Update 1.21.2-4 mit Anpassung von mehr als 300 CommandBlöcken (Geplant ab Januar mit Testphase)

Jedem Update gehen wochenlange, ausgiebige Tests voraus. Ebenso werden nach jedem Update sämtliche Config-Parameter der Serverinfrastruktur erneut geprüft und überarbeitet.

Für das Anpassen der Systemparameter des Server für die Version 1.21.1 hat das Team insgesamt etwa 15 Stunden Zeit investiert. Dabei wurden sämtliche Parameter erneut geprüft, mit Optimierung Guides verglichen, getestet, dokumentiert und auf dem Liveserver eingespielt.

Nur durch diese gezielten Parameter Anpassungen, sind wir in der Lage, den Server bei mehr als 30 Spielern halbwegs stabil bei 19 TPS zu halten.

Allerdings sind wir bei der Technik (Hardware, Parameter und Settings) im Bereich der maximal möglichen Optimierung angelangt. Eine weitere Verschärfung der Parameter hätte extremen Einfluss auf das Spielerlebnis auf Blockminers.

Um nur einige Änderungen zu nennen:

1. AFK-Spieler laden nun nur noch einen Chunk um sich herum
2. view-distance wurde reduziert
3. Spawn Limits und Spawn Zeiten von Mobs wurden reduziert
4. despawn-range wurde optimiert
5. Redstone Performance Implementation wurde geändert
6. Villager wurden angepasst im Bezug auf POI und Activation Range

Ich denke, das Ausmaß der investierten Zeit sieht man hier schon sehr deutlich.
Trotz all dieser Anpassungen und Optimierungen lässt sich ein Problem ganz deutlich erkennen: Entities.

Entities
Blockminers ist einer der wenigen Server, der keine Beschränkungen für Armorstands, Itemframes oder Maps hat. Auch bei anderen Entities ist Blockminers sehr locker (200 Mobs im Umkreis von 128 Blöcken).
Die meisten anderen Server sind bei der Anzahl von Entities wesentlich restriktiver. Beispielsweise sind dort Limits von 20 Armorstands, maximal 3 Villager, maximal 10 Tiere, etc. pro Grundstück hinterlegt.
All diese Limits führen in unseren Augen zu einer Einschränkung des Spielerlebnisses, tragen aber natürlich dazu bei, den Server möglichst wenig durch eben solche Entities zu belasten.

Um euch einen kleinen Einblick in die Performance zu geben - bei 30 Onlinespielern, während des Jubiläums waren durch den Spawn und die Halloweeninsel plus alle Spieler etwa 42.000 Entities geladen.
Ohne Halloweeninsel und bebauten Spawn landen wir bei 30 Spielern immer noch zwischen 11.000 - 30.000 Entities.
[Bild: attachment.php?aid=4300]
An diesem Screenshot kann man sehr gut ablesen, wie sehr die Entitylast des Server schwankt.
Teilweise macht der Logout/Login einzelner Spieler bis zu 12.000 geladene Entities mehr aus.
1000 Entities im Durchschnitt pro Spieler sind eine ganze Menge Last.
Auch hier haben wir bereits durch Parameter Anpassungen in der Vergangenheit (No Ticking Armorstands, Tracking Range, etc.) Optimierungen vorgenommen, um so den Server bestmöglich zu entlasten.


Mob Counter
Unser aktueller /mobs Counter zeigt die Armorstands und Entities nicht immer zuverlässig an. Daher hat sich Kaldoron an die Arbeit gemacht und einen neuen, aussagekräftigen Mob Counter entwickelt.

Ihr könnt ab dem kommenden Wochenende (Genaues Datum wird noch veröffentlicht) mit /mobs genau sehen, wie viele Entities ihr im Bereich von 128 Blöcken um euch herum geladen habt:
[Bild: attachment.php?aid=4301]

Hier eine Bitte an alle:
Prüft doch mal, wie viele Entities ihr ladet, wenn ihr in eurem Lager steht oder bei eurem Main Home und überlegt, ob diese Entities bei jedem Teleportieren geladen werden müssen.

Solltet ihr Gebäude/Bauten oder euer Lager auf Grund dieser Bitte verschieben lassen wollen, bieten wir dies kostenfrei an.

Bedingung hierfür:
1. Die Verschiebung muss weit genug sein, sodass dieser Bereich nicht mehr geladen werden kann. (mind. 16 Chunks = 256 Blöcke Entfernung)
2. Das Gebäude / Bauten müssen mind. 50 Armorstands beinhalten und in der Nähe eurer Main-Homes oder Lager sein.

Es geht uns um eine strategisch clevere Verlegung von unnötigen Entities. Wenn beispielsweise mein Main-Home im Lager meiner Stadt ist und direkt über mir 1000 Entities geladen werden, weil dort viele Datapacks verbaut sind, erzeugt das extreme Last auf dem Server, ohne einen wirklichen Mehrwert für den Spieler zu erbringen.

Wir wollen ein Limit für Armorstands, Itemframes oder Schilder vermeiden. Deshalb bitten wir euch im Wohle des Servers um eine Zerstreuung der Armorstands.

Jeder der Armorstand Kreationen verbaut hat trägt zu der Problematik mit bei, genauso kann aber auch jeder von euch mit einfachen Mitteln zur Verbesserung der Performance beitragen.



Serverinfrastruktur / Minecraft Java
Nun wird es etwas technisch: Minecraft in der Java Version ist über die Jahre gewachsen und es wurden durch Spigot / Paper / Purpur immer wieder Performance Patches in das normale Minecraft Java implementiert, um einen stabilen Serverbetrieb zu gewährleisten.
Allerdings hat Java das grundlegende Problem, dass der Prozess an sich nicht Multi-Core-fähig ist.

Das bedeutet vereinfacht gesagt, dass eine Java Instanz nur auf einen CPU Kern zugreift.
Somit sind Server mit vielen CPU Kernen / Threads für Minecraft Server nicht gut geeignet. Im Gegenteil ist es vorteilhaft, einen Server mit einer möglichst hohen Taktrate in einem Single-Thread zu haben und dafür weniger Kerne / Threads.

Wie gesagt, Spigot / Paper / Purpur haben einige Performance Patches implementiert, sodass MC Server auch andere Kerne / Threads benutzen können oder die Daten asynchron verarbeiten. Das Grundproblem mit Java bleibt allerdings bestehen.

Unsere aktuelle Server-Konfiguration stellt eine zentrale Java-Instanz für die Bauwelt und die Farmwelten bereit.

Um den Server weiter zu entlasten, wollen wir die Farmwelten in eine eigene Java-Instanz auslagern.

Velocity
Die Minecraft Java Community hat dafür sogenannte Proxy-Server entwickelt (Waterfall und Velocity).
Dabei wird dem Client nach außen hin immer nur ein Server propagiert, im Hintergrund können aber theoretisch unendlich viele andere Minecraft Server laufen, die alle in einer eigenen Java-Instanz ausgeführt werden und sich daher nicht gegenseitig beeinflussen.

Diese Umstellung hat gravierende Änderungen an der Infrastruktur, den grundlegenden Plugins (Permissions, Homes, Data Sync, etc.) und dem Verhalten des Servers mit sich gebracht.

Da die Änderung einen administrativen Mehraufwand mit sich bringt, wollen wir die Auswirkungen vor dem Go-Live gründlich analysieren und messen.

Proof of Concept
Kaldoron und ich haben die letzten Wochen damit verbracht, einen Testaufbau vorzubereiten und sind nun in der Lage, die beiden Java-Varianten exakt miteinander zu vergleichen.

Daher suchen wir für Sonntag, den 01.12.2024 ab 16:00 Uhr insgesamt 10 Spieler, die uns auf dem Testserver mit vorgegebenen Aufgaben unterstützen.

Die Aufgaben umfassen beispielsweise das Fliegen in der Farmwelt, Stripmining, das Laden von Regionen mit vielen Entities, etc.
Es sind keine schwierigen Aufgaben dabei, das meiste wird ohne großes Zutun eurerseits erledigt werden können.
Wer sich dafür verbindlich anmelden möchte, schreibt dies unter diesem Thread.
Wir können nur 10 Personen zum Testen einsetzen. Wir werden die Personen hier benennen, die für den Test ausgewählt wurden.

Anmeldeliste:
1. NAME
2. NAME
3. NAME
4. NAME
5. NAME
6. NAME
7. NAME
8. NAME
9. NAME
10. NAME

Sofern sich unsere Erwartungen bestätigen, sollte der Testaufbau und die Umstellung auf Velocity einen deutlichen Performancegewinn mit sich bringen.
Nach dem Performance Test müssen allerdings noch sämtliche “Update” Tests durchgeführt und die Migration geplant werden. Eine Umstellung des Liveservers sehe ich daher erst ab Januar.

Die Umstellung auf Velocity ist eine der größten Änderungen an der Serverinfrastruktur der letzten Jahre.

Das ist eure Chance dabei zu sein, Impulse zu liefern und die Ergebnisse live mitzuverfolgen.

Fazit
Dieser lange Artikel soll vor allem für die Thematik und damit einhergehenden Schwierigkeiten durch Entities sensibilisieren.
Wir als Team sind regelmäßig dabei, die Performance und das Verhalten des Servers zu analysieren und zu optimieren.
Viele dieser Tätigkeiten finden für euch als Spieler im Hintergrund statt und oft sind die Änderungen für euch nur marginal spürbar, auch wenn sie dem Server erhebliche Entlastung bringt.

Unser oberster Anspruch ist die Stabilität des Servers und ein gleichbleibend gutes Spielerlebnis für alle Spieler zu gewährleisten.
Ihr alle als Teil dieser Community könnt mit strategischen Entscheidungen zum Wohl des Server beitragen.
Überlegt euch, ob eure Stadt wirklich noch ein Datapack mehr braucht, ob euer Lager direkt unter 5.000 Armorstands sein muss, ob euer Main-Home in der entitiereichsten Region der Stadt sein muss.

Alle kleinen Änderungen können im Wesentlichen zu einer Verbesserung der Performance für alle Spieler führen.

Um es ganz klar zu sagen:
Wir wollen, dass Blockminers der Ort zum kreativen Bauen bleibt.
Wir wollen ein Limit für Armorstands vermeiden.
Wir wollen einen stabilen Server, der für alle User ein gutes Spielerlebnis liefert.

Sollte Velocity unsere Erwartungen erfüllen, ist die Auslagerung der Farmwelten nur der Anfang. Beispielsweise ist eine Verschiebung aller Events in eine Eventwelt angedacht, sodass Entities eines Events (Geistervilla, Halloween, Ostern, etc.) nicht mehr die Bauwelt und damit alle Spieler belasten.
Welche sonstigen Dinge noch ausgelagert werden können, werden wir dann mit der Zeit entscheiden.

Ich hoffe, ich konnte das Thema Rund um Entities und die damit einhergehende Belastung verdeutlichen. Seitens der Technik ist Velocity mehr oder weniger die letzte Möglichkeit einen stabilen Betrieb mit den jetzigen Regeln fortführen zu können.


Weiteres Vorgehen
Sobald der Test abgeschlossen ist, werde ich hier die Ergebnisse präsentieren und euch einen Überblick verschaffen.
Natürlich stehen wir euch jederzeit bei Fragen im Discord oder In-Game zur Verfügung.

Zusätzlich werden wir eine “Community-Sprechstunde” nach dem Test für euch anbieten, sofern ihr eigene Ideen habt, könnt ihr diese gerne innerhalb der Sprechstunde ansprechen und diskutieren.

Den Testserver werden wir nach unserem Test für alle freischalten, sodass ihr euch einen ersten Eindruck von Velocity verschaffen könnt.

Stay tuned

Cola, Razen, Kalli
sowie das gesamte Blockminers Team


Angehängte Dateien Thumbnail(s)
       
Zitieren
#2
RE: News zur Severtechnik
Hei, 

würde mich als Testerin zur Verfügung stellen :3

Grüsschen
Katze
Zitieren
#3
RE: News zur Severtechnik
Heyho ihr lieben.
Gerne helfe ich euch dabei.
MfG Kijargo
Zitieren
#4
RE: News zur Severtechnik
Hab selber versucht einige Server mit 20 Spielern zu hosten und bin schrecklich gescheitert an dem Problem.
Würde mich auch gerne als Kaninchen melden.

Mit Schinken Typisch
vielen Grüßen^^
Zitieren
#5
RE: News zur Severtechnik
Würde mich auch als Testobjekt zur Verfügung stellen!

Anmerkung: heiße ingame nicht mehr Jeffrey_640 sondern mkkQ

MIMIMIMI! ICH BIN NITRO!
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste