Das gescheiterte Update

SteuerungC

Senior
17 Jan 2016
693
Das gescheitere Update
Ein Drama in drei Akten

8A8FjlH.jpg

Entwicklerkonferenz bei Mojang (Symbolbild)
Wie in der Ankündigung für das 1.14-Update versprochen, möchte ich in diesem Thema unsere Beobachtungen mit der 1.14 beschreiben und einmal darstellen, woran es letztendlich gescheitert ist. In diesem Text werde ich mich auch ein wenig über Mojang, den Minecraftentwickler, auslassen. Dies soll nicht die Entwickler selbst kritisieren, sondern vielmehr das System, wie die Minecraft Java Edition entwickelt wird. Dabei wird auch der Druck seitens Microsoft eine wichtige Rolle spielen.
Dieser Text wird natürlich wieder einige Fachbegriffe verwenden und ein wenig tiefer in die Technik hinter dem Server gehen. Ich versuche aber trotzdem alles so darzustellen, dass jeder es verstehen kann. Für die Profis: Einige Dinge sind selbstverständlich vereinfacht. Falls es Fragen gibt, könnt ihr diese gerne unter dem Thema stellen.

Prolog
Wie in dem Dev-Blog-Beitrag "Hinter den Kulissen Teil 1: Minecraftserver" von @RiotSeb beschrieben, ist Unlimitedworld nicht nur ein einzelner Minecraftserver, sondern besteht aus mehreren, die in einem Netzwerk zusammengefasst sind. Konkret sprechen wir hier über insgesamt sechs Minecraftserver auf denen alleine die Hauptwelt läuft, plus diverse Server für die Farmwelt, die Creative-Welt und die Minigame-Welt. Zu Hochzeiten nutzen wir so bis zu zwölf Minecraftserver parallel. Technisch bedingt kann leider nur eine begrenzte Anzahl von Spielern gleichzeitig auf einem Server sein. Durch unser Netzwerk werden die Spieler auf viele Server verteilt, so dass bei 200 Online-Spielern trotzdem auf jedem einzelnen Server nur ca. 30 bis 50 Spieler sind.

Früher war es so, dass man vereinfacht sagen konnte, dass ein Minecraftserver alle seine Weltberechnungen auf einem einzigen Kern des Prozessors (CPU, Central Processing Unit) durchgeführt hat. Unsere Hardware hatten wir so ausgewählt, dass sie genau dem gerecht wird. Wir nutzen einen Hardware-Server (im weiteren Verlauf als Maschine bezeichnet) mit einem Intel Xeon E5-1650 v4 @ 3.60GHz mit 6 Kernen und 12 Threads (parallele Abarbeitungsmöglichkeiten), 128GB DDR4 Arbeitsspeicher und zwei 1,8TB NVMe-SSDs im RAID1. Auf dieser Maschine laufen natürlich auch das Forum, der Teamspeak, unsere Datenbankserver, unsere Entwicklungsinfrastruktur und einige Hintergrunddienste für die Steuerung und das Monitoring des ganzen Systems.

Durch dieses Hardwarekonzept konnten sich die Minecraft- und sonstigen Server problemlos auf die 12 CPU-Threads verteilen. Das hat bis zur Version 1.12 wunderbar funktioniert.

1. Akt: Die Veränderung
Bis zu diesem Punkt hat ein Minecraftserver vor allem von der Single-Core-Performance profitiert: Eine CPU, die einzelne Kerne (Single Core) sehr hoch getaktet hat, sorgte dafür, dass man dort einen Server mit vielen Spielern flüssig laufen lassen konnte. Ich erinnere mich noch an die Zeit mit der Version 1.10, wo es kein Problem war, 120 Leute auf einem einzelnen Server laggfrei spielen zu lassen.

1. Auftritt: Neue Technik
Jedoch entwickeln sich moderne CPUs eher so, dass sie statt wenigen Kernen mit großer Leistung eher viele Kerne mit weniger Leistung haben. Auch Mojang hat dies gemerkt und ab der 1.12 verstärkt damit angefangen, die Prozesse des Servers zu parallelisieren, sodass ein Server die Leistung von mehreren Kernen nutzen kann. Der Hauptprozess des Servers, der für die Berechnung der Welt, der Tiere usw. zuständig ist, bleibt jedoch weiterhin auf einem Kern. Zuletzt wurde so die Lichtberechnung vom Hauptprozess des Servers in einen Nebenprozess ausgelagert. Das klingt alles super, jedoch ist die Umsetzung einfach unglaublich schlecht. Und mit neuen Minecraft-Versionen kommen immer mehr neue, rechenintensive Inhalte dazu, sodass auch die eigentlichen Aufgaben des Hauptprozesses schon zuviel werden. Hinzu kommt, dass die Parallelisierung so schlecht implementiert ist, dass sie mehr Rechenleistung kostet, als es am Hauptprozess sparen könnte. Natürlich benötigen neue Inhalte im Spiel mehr Rechenleistung, jedoch sorgen die "Optimierungen" seitens Mojang dafür, dass mit jeder Version deutlich mehr zusätzliche Rechenleistung benötigt wird als erträglich ist. Zuletzt konnten man an einem nicht optimierten 1.14-Server erkennen, dass dieser bis zu 50% mehr Prozessorleistung und etwa 30% mehr Arbeitsspeicher benötigte als ein 1.13-Server. Wenn man sich überlegt, wie wenig eigentlich dazu gekommen ist, ist das schon heftig. (In diesem Absatz habe ich absichtlich die parallel laufenden Prozess-Threads als Haupt- und Nebenprozesse bezeichnet, der Terminus stimmt natürlich nicht, macht es aber übersichtlicher.)

2. Auftritt: Unsere Anpassungen
Nachdem wir mit den Anpassungen an unseren Plugins für das 1.14-Update recht schnell fertig waren, legten wir das Augenmerk auf die Optimierung der Minecraftserver. Zuerst hofften wir noch, dass Mojang noch Fixes für die 1.14 bringt, jedoch kündigte Mojang mit dem Release der 1.14.4 an, dass man sich dort jetzt auf die 1.15 konzentrieren wolle und man keine weiteren Performanceupdates für die 1.14 herausbringen würde. Ein Schlag für uns, denn nun waren wir wieder auf uns alleine gestellt. Die Entwicklercommunities hinter der von uns eingesetzten Serversoftware Spigot und Paper haben viele Verbesserungen hervorgebracht, welche wir mit eigenen Optimierungen erweitert haben. Zuletzt waren wir mit unseren Tests so zufrieden, dass wir das Update auf 1.14.4 wagten.

Und genau an diesem Punkt möchte ich einmal auf unsere Beobachtungen eingehen und zeigen, wo die Probleme bestehen.

2. Akt: Der Minecraftserver
In diesem Thema schauen wir uns exemplarisch einen unserer Minecraftserver an, konkret die Zentralwelt ohne Spawn. Dieser Server ist besonders interessant, da er als größter und ältester Teil der Welt immer am stärksten belastet ist. Die folgenden Graphen zeigen als rote Kurve immer die Spielerzahl auf dem Server "Zentralwelt". Die Daten stammen von kurz nach 17:00 Uhr vom Tag des Updates und zeigen die vergangenen 24 Stunden. In der ganzen Zeit sind stets weniger als 30 Spieler in diesem Teil der Welt.

1. Aufritt: Ticks per Second
Mincraft ist ein Tick-gesteuertes Spiel. Alle 50 Millisekunden (ms) wird ein Tick ausgelöst, also 20 Ticks pro Sekunde (TPS). Auch wenn niemand etwas macht, bewegen sich mit jedem Tick die Tiere, wachsen die Pflanzen etc.. Normalerweise kann der Server alle Aufgaben, die er in einem Tick erledigen soll, in den zur Vefügung stehenden 50 ms abarbeiten. Dann läuft er mit dem Idealwert von 20 TPS. Im Normalfall wird der Server mit einem Tick sogar schon nach maximal 40 ms fertig und hat dann 10 ms Pause. Es kann aber auch vorkommen, dass bspw. durch die Berechnung von sehr vielen Tieren der Server manchmal mehr als 50 ms für einen Tick braucht. Der Server kann nicht einfach den Tick abbrechen, aber er kann sich mehr Zeit für den Tick nehmen. Das senkt dann die TPS, d.h. es erfolgen weniger als 20 Ticks pro Sekunde. Hier ist einmal dargestellt, was eine Veränderungen der TPS für das Spielerlebnis auf dem Server bedeutet:

18 - 20 TPS: Der Server läuft gut, Schwankungen kommen ab und an vor, stören aber selten.
15 - 18 TPS: Der Server läuft noch annehmbar, jedoch hängen Tiere und Spieler schon merkbar und Interaktionen finden verspätet statt.
10 - 15 TPS: Der Server läuft schlecht, man muss fast alle Blöcke mehrmals abbauen, der Tagesrhythmus springt.
0 - 10 TPS: Das Spielen auf dem Server ist kaum noch möglich, man wird ständig zurückgesetzt und der Server kann jederzeit abstürzen.

Zusammengefasst sollte also jeder Server mit 18 bis 20 TPS laufen. Jetzt schauen wir uns mal an, wie das mit dem Update aussah (grüne Kurve und linke Skala = TPS, rote Kurve und rechte Skala = Spieler in der Zentralwelt):

X0aa7YR.png
Schauen wir uns zuerst den Abend des 07.08. an (linke Seite): In der Spielerspitze gegen 21 Uhr erkennt man leichte Schwankungen der TPS, jedoch bleiben die TPS fast immer über 15, weswegen man keine größeren Einschränkungen beim Spielerlebnis hinnehmen muss. Der Server "Zentralwelt" könnte mit der Spielerspitze besser laufen, aber so ist es okay.
Nach dem Update ist aber plötzlich alles anders: Die TPS fallen mit vergleichbarer Spielerzahl schlagartig unter sieben - zeitweise hatten wir nur 2,48 TPS! Dieser Zustand ist keinesfalls hinnehmbar. Im Graphen erkennt man ganz gut den Restart gegen 14:30 Uhr sowie eine Verbesserung der TPS, als nur noch 10 Spieler auf dem Server waren. (Funfact: Wir überwachen laufend die TPS aller Server und hatten die Graphen so eingestellt, dass die TPS nur zwischen 14 und 22 angezeigt werden, weil sie nie darunter fielen. Daher konnten wir die schlechten Werte anfangs gar nicht sehen und mussten die Graphen nach unten erweitern.)

Woran hat diese rapide Verschlechterung nun gelegen? Üblicherweise können wir die Ursache an den Timings (quasi einer Aufgabenübersicht des Servers) ablesen, doch das war diesmal nicht möglich, da die Auslastung der Maschine über die ganze Zeit kritisch hoch war (siehe 3. Akt). Erkennbar war nur eine sehr hohe Auslastung durch Entities, also vor allem Tiere, besonders auch durch Villager, die seit der 1.14 nicht mehr nur zwei internen Bewegungszielen nachgehen (z.B. Haustür oder Feld aufsuchen) sondern, trotz Optimierungen, über zehn (u.a. Arbeitsblock, Bett und Glocke aufsuchen). Weiterhin kann man sagen, dass die 1.14.4 einfach katastrophal läuft. Viele Informationen deuten darauf hin, dass die Minecraftserver für einige Sachen viel mehr Leistung benötigen als eigentlich nötig wäre. Neben den Änderungen an der Lichtberechnung verursachen scheinbar vor allem auch "Optimierungen" seitens Mojang beim Laden und Entladen von Chunks eine untolerierbare Mehrbelastung.


2. Auftritt: Arbeitsspeicher
Um Welten, Spieler, Tiere usw. im Prozess schnell zugreifbar zu machen, benötigt ein Minecraftserver - wie jede andere Anwendung auch - Arbeitsspeicher (RAM). Ein typischer Irrglaube ist, dass Minecraftserver dabei besonders viel RAM benötigen. Unsere Minecraftserver benötigen üblicherweise nur maximal 4 GB RAM, wobei davon etwa 1 GB von den Daten unserer eigenen Plugins belegt wird.

Mit der 1.14.4 war uns schon bekannt, dass deutlich mehr Chunks geladen bleiben als bisher und jeder Minecraftserver so etwa 30 % mehr RAM benötigen wird. Dies haben wir während des Updates passend eingerichtet. Freie Ressourcen hatten wir glücklicherweise genug. So sah die Veränderung dann im Betrieb aus (violette Kurve und linke Skala = RAM, rote Kurve und rechte Skala = Spieler in der Zentralwelt).

lxw0tXR.png

Die violette Kurve zeigt, dass die Belegung des RAMs schwankt. Dies ist ganz normal: Daten, die beim Prozess nicht mehr benötigt werden, wie z.B. ein Chunk, der nicht mehr geladen ist und bereits auf die Festplatte gesichert wurde, werden nicht sofort, sondern später zeitversetzt vom sogenannten GarbageCollector (Müllsammler) freigeräumt. Im normalen Serverbetrieb funktioniert der GarbageCollector so, dass er entweder die freie Zeit zwischen zwei Ticks nutzt, um unbenutzte Daten wegzuräumen oder dass er so weit wie möglich entkoppelt vom Serverprozess funktioniert, um diesen nicht zu stören.
Da aber nach dem Update auf die 1.14.4 zwischen den Ticks keine Zeit mehr übrig blieb und die Auslastung der Maschine auch teilweise zu hoch war, damit der GarbageCollector seine Aufgabe entkoppelt durchführen konnte, kann man an zwei Stellen erkennen, wie der RAM der Zentralwelt bis zum von uns festgelegten Maximalwert von 6 GB gefüllt wird, da der GarbageCollector überhaupt nicht mehr nicht aktiv wurde und keine Daten mehr wegräumte.
Wenn der Speicher bis zu seinem zugewiesenen Limit komplett vollläuft, wird automatisch eine Notfallaktion, der sogenannte FullGC durchgeführt. Dabei wird der Serverprozess angehalten und alle Leistung für das Freiräumen des RAMs benutzt. Das Resultat ist ein sogenanntes Stop-The-World-Event, weil wirklich alles im Prozess pausiert. Bei einem Minecraftserver kann das dazu führen, dass es kurz massiv laggt oder es sogar zu einem Timeout bei den verbundenen Spielern kommt und sie die Verbindung zum Server verlieren. Deshalb arbeiten wir daran, diese FullGCs mit diversen Optimierungen zu verhindern - bei der 1.14 hat das leider nicht geklappt.

3. Auftritt: Weitere Überwachungsparameter
Natürlich überwachen wir noch einen Haufen weitere Parameter für jeden Server. Ich habe hier noch zwei Graphen, die sehr interessant sind.

Zuerst mal ein gutes Zeichen. Hier ein Graph, bei dem die geladenen Entities in orange (Tiere, Monster, Bilderrahmen, Rüstungsständer usw.) und Tiles in gelb (Blockinhalte wie Kisten, Öfen, Trichter usw.) zeigt (gemeinsame Skala links). Die rote Kurve und die rechte Skala zeigt wieder die Anzahl der Spieler in der Zentralwelt.

Hier kann man erkennen, dass es vor und nach dem Update kaum Veränderungen gab. Das ist genau so wie erwartet: Die Anzahl der geladenen Tiere und Blockinhalte hat sich durch das Update nicht verändert.

CYFTnx1.png


Weiterhin zeichnen wir auf, wie viele Chunks auf jedem Server geladen sind (gelbe Kurve mit Skala links). Hier erkennt man alleine für die Zentralwelt schon einen großen Unterschied zwischen vor und nach dem Update:
68Jp9W4.png
Man sieht deutlich nach dem Update einen Anstieg der geladenen Chunks um mehr als 250 %. Der Grund ist eine Optimierung von Mojang. Früher wurden nur die Chunks innerhalb der Spielersichtweite geladen und getickt (aktive Chunks). Mit Version 1.14 werden weitere Chunks außerhalb der Sichtweite geladen. Diese passiven Chunks bleiben deutlich länger geladen und werden nicht getickt. Deshalb tauchen auch deren Tiere und Blockinhalte nicht oben in dem Graphen auf.
Beim Laden der Chunks haben wir bereits diverse Optimierungen am Server vorgenommen. Jedoch bleibt das weiterhin ein guter Ansatzpunkt: Kann man vielleicht die Zahl der passiven Chunks reduzieren? Gibt es hier noch Fehler, welche den Lastanstieg begründen? Oder haben wir einen Fehler in unseren Optimierungen gemacht? Hier werden wir versuchen, den Server weiter zu optimieren.

3. Akt: Die Maschine


1. Auftritt: Prozessorleistung
Oben habe ich ja schon beschrieben, dass es auch ein Problem mit der Auslastung der Maschine, also mit der Hardware gab. Zu Beginn des Updates auf die Version 1.14.4 haben wir alle unsere Entwicklungsserver heruntergefahren (der Beta-Server und interne Welten, auf den wir Sachen vorbauen und testen). Ebenfalls haben wir Unlimitedworld mit der 1.14.4 mit minimalem Unfang gestartet - also nur mit Farmwelt und Creative-Welt ohne Minigame-Welt - um ein ungetrübtes Bild von den Leistungsanforderungen der 1.14 für den reinen Spielbetrieb zu bekommen und um ihm die maximalen Ressourcen zu geben. Nachdem wir die Tests auf dem Beta-Server umgerechnet hatten, kamen wir zu dem Entschluss, dass wir mit den bestehenden Ressourcen genau auskommen müssten - Pustekuchen:

T3pS5Cu.png
In der Grafik sieht man die letzten 32 Stunden der Maschinenauslastung aus dem Monitoringtool Munin. Wir nutzen dieses Tool zusammen mit einigen anderen, aber die Munin-Grafiken geben mit Abstand am schnellsten eine Übersicht über das Geschehen. Jeder Prozessor-Thread ist hier mit 100 % dargestellt, sodass wir insgesamt 1200 % (12 Threads à 100 %) zur Verfügung haben. Der dunkelgrüne Bereich zeigt die CPU-Auslastung der Hardware durch das Betriebssystem, der blaue Bereich die Auslastung durch alle unsere Prozesse und der gelbe Bereich ist die Freizeit, die die CPU hat (Idle Time).
Am Tag vor dem Update (Wed = Mittwoch) erkennt man, dass die Leistung der Maschine ausreichend ist. Die Belastungsgrenze wird kurz vor 22:00 Uhr mit 1100 % erreicht. Zu diesem Zeitpunkt waren 150 Spieler online und neben den Spielwelten liefen auch noch alle internen Server.
Im weiteren Verlauf erkennt man das tägliche Backup um 4:00 Uhr als kleine Last-Spitze, dann das Ansteigen der Last durch mehr Spieler am Vormittag des Donnerstags (Thu) sowie die Lastspitze durch das Backup um etwa 12:00 Uhr. Während wir das Update durchgeführt haben, haben wir auch alle Welten für die 1.14 konvertiert, damit dies nicht im Serverbetrieb geschehen muss, was eine weitere Spitze verursacht.
Um kurz vor 14:00 Uhr öffneten wir den Server dann wieder - und innerhalb weniger Minuten stieg die Serverlast massiv an. Zwar ist immer noch ein kleiner gelber Freizeit-Bereich zu sehen, aber das täuscht. Die Messwerte werden über 5 Minuten gemittelt und aus verschiedenen technischen Gründen (bspw. auch Hyperthreading vs. Turbo-Takt) können diese bei unserer Art der Belastung nicht über den Wert steigen, den man oben erkennt. Der Prozessor war also komplett ausgelastet, es war keine Rechenzeit mehr dafür frei, die Ticks gescheit zu berechnen und andere wichtige Berechnungen noch korrekt durchzuführen. Das wäre für eine kurze Zeit auszuhalten, aber dauerhaft verursacht eine solche hohe Auslastung noch andere Probleme. Irgendwann muss man sogar damit rechnen, dass die Lebenszeit der Hardware drastisch reduziert wird.
Unsere Hochrechnungen aus den Beta-Tests waren also nicht korrekt gewesen. Stattdessen benötigt die 1.14.4 mit unserem Entwicklungsstand, also trotz der zahlreichen Optimierungen, immer noch unglaublich viel Prozessorleistung. Für einen normalen Betrieb mit 120 Spielern würden wir in diesem Zustand etwa das Doppelte an Prozessorleistung benötigen, als noch mit der 1.13.2.

2. Auftritt: Arbeitsspeicher
Nun möchte ich noch einmal auf die Thematik mit dem Arbeitsspeicher eingehen, bei der wir glücklicherweise nicht so kalt überrascht wurden:

EhHpWQ2.png
Auch hier sieht man wieder eine Grafik aus dem Monitoringtool Munin mit den letzten 32 Stunden. Über 80 GB der 128 GB RAM, die wir zur Verfügung haben, werden üblicherweise von den Servern und allen anderen Diensten benutzt (grün). Der Rest ist frei für den sogenannten Cache (dunkelblau). Das Betriebssystem legt Daten, die es häufig von der "Festplatte" lesen muss im freien Teil des Arbeitsspeicher ab, um Zugriffszeit zu sparen. Von diesem Cache profitieren vor allem die Datenbankserver sowie auch die Minecraftserver. Bei unserer Maschine benötigen wir diesen Cache zwingend, da es sonst beim Prozessor zu sogenannten IOWaits kommen würde, also Zeiten, die der Prozessor damit verschwendet, auf Festplatteninteraktionen zu warten (IO = Input/Output, Wait = Warten). Das Betriebssystem hat es ziemlich gut raus, Dateien so im Cache abzulegen, das IOWaits fast völlig verhindert werden können - genau das erreichen wir im Betrieb auch.

Vergleicht man den grünen Bereich vor und nach dem Update, fällt auf, dass die wenigen Server, die in der Minimalversion von Unlimitedworld mit der 1.14.4 laufen, genauso viel RAM brauchen, wie die vielen Server mit 1.13.2. Damit hatten wir gerechnet und die Ressourcen hatten dafür gereicht. Zusätzlich erkennt man, dass das Betriebssystem deutlich aggressiver mit dem Cachen beginnt. Der Cache füllt sich nicht langsam über den ganzen Tag, sondern sofort. (Dies sorgt im übrigen auch dafür, dass in orange ein spezieller Cache, der Slab-Cache, stärker beansprucht wird als vorher). Durch die erheblich größere Menge an Lade- und Entladevorgängen bei den Chunks (siehe oben) hat das Betriebssystem viel schneller begonnen, Daten zu cachen - das hat es so gut gemacht, dass tatsächlich durch die 1.14.4 kein Anstieg der Festplattenbelastung (hier nicht dargestellt) zu erkennen war. Hier kann man also wenigstens von einem kleinen Erfolg sprechen: Arbeitsspeicher und Festplatte haben sich optimal verhalten - genau so, wie geplant.

Hier nochmal eine zusammenfassende Grafik aus dem Tool netdata, in dem wir mit einer eigenen Erweiterung die Auslastungen, die nur von den Minecraftservern kommen, präziser bestimmen können. In diesem Beispiel ein 10-Minuten-Ausschnitt ab 17:00 Uhr am Tag des Updates. Die Grafik zeigt die CPU-Auslastung durch die verschiedenen Minecraftserver, die rechts farblich aufgelistet sind (die Zentralwelt heißt "main_c").

2Uof7Ec.png
Erkennbar ist hier wieder die hohe CPU-Auslastung: Mit 1.14.4 benutzen alle Server zusammen 1000% von maximal 1200%, das heißt 83% der Maximalauslastung. Der Rest wird für alle anderen Dienste benutzt. Zu sehen ist auch, dass nicht nur ein einzelner Minecraftserver die hohe Last verursacht, sondern alle zusammen. Zum Zeitpunkt des Screenshots hat die Zentralwelt main_c mit 243% von 1200% bzw. mit 20% vom Maximum die meiste Prozessorleistung beansprucht.


Epilog
In diesem Abschnitt möchte ich den technischen Bereich wieder verlassen und beschreiben, warum das Update nicht geklappt hat, wer daran schuld ist und was zukünftig jetzt noch passiert.

Warum hat das Update jetzt nicht geklappt?
Das ist tatsächlich ganz einfach zu beantworten: Die Minecraftserver benötigen mit Version 1.14.4 so viel Leistung, dass im aktuellen Entwicklungsstand unsere Infrastruktur nicht dafür ausreicht. Sie benötigen ein Vielfaches mehr an Rechenleistung als mit 1.13.2 und laufen auch im Vanilla-Teil (den wir nicht optimieren können) schlechter als vorher. Die Server sind mit den geladenen Weltteilen und Tieren mit nur ganz wenigen Spielern schon völlig ausgelastet. Natürlich kann man einen solchen Zustand weder Spielern noch der Hardware zumuten. Da auch unsere kurzfristigen Notfall-Anpassungen am Nachmittag des Updates nicht den gewünschten Erfolg gebracht haben, entschlossen wir uns, das 1.13.2-Backup wieder einzuspielen. Umsonst war das alles natürlich nicht: Wir konnten viele Erkenntnisse und Messdaten sammeln.

Was macht Mojang?
Mit jedem Minecraft-Update wird die Serversoftware deutlich schlechter. "Optimierungen" haben lächerlich schlechte Auswirkungen auf den Server. Neue Features werden so schlampig implementiert, dass auch diese unverhältnismäßig viel Rechenzeit benötigen. Und statt die Fehler in der aktuellen Version zu beheben, wird man auf die nächste Version vertröstet - in der dann auch wieder Features implementiert werden, die so viel Leistung fressen, dass jedes Update für alle Serverbetreiber zur Tortur wird. Wenn es die klugen, unermüdlichen Köpfe in den Entwicklercommunities oder bei großen, kommerziellen Projekten nicht geben würde, die die Software mit Modifikationen verbessert (oder Teile einfach komplett neu schreibt), würde es keine Multiplayerserver geben, auf denen mehr als 10 Leute online sein können. Der Serverquellcode ist nicht öffentlich, was das Arbeiten am Server nochmal deutlich schwerer macht als nötig. Bei Mojang wird scheinbar kaum Zeit für den Multiplayermodus der Java Edition verschwendet, auch wenn ein Großteil der Spielerschaft diesen benutzt.
Natürlich ist an dem gestrigen Problem nicht alleine Mojang schuld. Wir haben die Testergebnisse des Beta-Servers zu optimistisch gesehen, haben eine zu strikt geplante Roadmap für das 1.14.4-Update aufgesetzt, um das Update noch vor dem Geburtstag auf dem Server sehen zu wollen und waren schließlich viel zu überzeugt von unseren Optimierungen, die leider nicht viel daran ändern, dass die Software im Kern nur eines ist: Großer Mist. Es kann doch nicht sein, dass ein Minecraftserver unserer Größe sich ein halbes Rechenzentrum mieten muss.
So gibt es dann nunmal zum Geburtstag diesen Text und kein 1.14.4-Update. Trotzdem werden wir nicht einfach aufgeben ...

Ich möchte an dieser Stelle einen bereits gelöschten Kommentar auf dem Bugtracker von Mojang erwähnen, welcher zeigt, wie traurig auch andere Serverbetreiber über diesen Zustand sind:
The performance is not just "not perfect", it is dramatically bad. 1.14 does not need "optimizations" but a general fix of completely broken performance. We are testing on 1.14 since the release. There is a noticable difference from 1.14.3 to 1.14.4 but this is still very very far from fixing the game. My dedicated Xeon 4-cores with 16 GB RAM server was running so far with disabled raids and without using elytras, because it was simply dying otherwise. After updating to 1.14.4 we could see some better performance, yes. But after turning on raids and starting to use elytras again the server sometimes drops even to 9 TPS with 7 players on board. This is not just "not perfect" performance. This is the end of any reasonable multiplayer experience with 1.14+ (...)
Simple comparison on the same machine back to 1.13.2:
- 1.13.2: render distance 15, server TPS stable 20 always and all the time, with 20+ players on-line.
- 1.14.4: render distance 6, server TPS often dropping to 9-10, with 7 players on-line.
No more comments needed.

Und wie geht es jetzt bei uns weiter?
Wir werden uns jetzt erstmal im (Dev-)Team beraten. Aktuell sind wir schon dabei, die ganzen schönen versionsunabhängigen Erweiterungen, die wir nur in der 1.14-Version unserer Plugins vorgenommen hatten, in die 1.13-Version übertragen zu können (Beispiel: Villager anleinen können). Wir hatten noch weitere tolle Sachen mit der 1.14 geplant und bereits vorbereitet - Die wird es nun demnächst mit der 1.13.2 geben.
Parallel werden wir natürlich weiter an Optimierungen für die 1.14 arbeiten. Wir werden uns in der Entwicklercommunity mit anderen Entwicklern austauschen, weitere Tests machen und die zukünftige Entwicklung ganz genau beobachten. Und vielleicht - ganz vielleicht - gibt es mit der 1.15 ja mal ein Update, was echte Optimierungen an der Serversoftware macht, sodass diese endlich mal direkt nach der Veröffentlichung besser läuft.
Weiterhin werden wir unsere Infrastrukur weiter optimieren und einen Ausbau prüfen. Denn für die Verteilung von Unlimitedworld auf mehrere Maschinen ist fast alles vorbereitet. Solche Schritte werden wir dann aber auch im Dev-Blog dokumentieren.

Für alle, die sich sehr auf das 1.14.4-Update gefreut haben oder die ihren gestrigen Baufortschritt durch das Backup verloren haben, kann ich leider nur eines tun: Um Entschuldigung bitten. Wir lassen uns von diesem Rückschlag nicht unterkriegen! Die Entwicklung von Unlimitedworld wird weiter gehen - und ihr werdet hoffentlich mit dabei sein.
 
Ergänzung zur Ursache:

Meine Vermutung lautet, dass vor allem Microsoft eine gewisse Rolle dabei spielt. Wer an Weihnachten 2017 zurückdenkt, weiß noch, dass Mojang ein "Technisches Update" 1.13 und anschließend das "Aquatic Update" 1.14 herausbringen wollte. Vermutlich hat Microsoft vorgeschrieben, dass die Aquatic Updates von Java Edition (Mojang) und Bedrock Edition (Microsoft) gemeinsam im Mai 2018 veröffentlicht werden sollen. Zu der Zeit hatte Mojang aber nur ca. drei bis vier Java-Entwickler, während bei Microsoft deutlich mehr Leute an der Bedrock Edition programmierten. Kein Wunder, dass Mojang im Januar sämtliche Arbeiten am Technischen Update einstellte und sich nur noch auf die schnelle Fertigstellung des Aquatic Update konzentrierte. Die bekannten Folgen: Beide Updates wurden zu 1.13 zusammengelegt, aber durch die bereits vorgenommenen technischen Änderungen funktionierte nichts mehr und der Fertigstellungstermin der 1.13 verschob sich vom Mai bis in den Juli. Wäre Mojang alleine und unabhängig gewesen, hätten sie wie früher erstmal ganz in Ruhe das Technische Update fertiggestellt, auch wenn das bis in den Sommer gedauert hätte und dann erst das Aquatic Update begonnen.

So konnte es natürlich nicht weitergehen. Erstmalig in der Geschichte von Mojang wurden in 2018 zehn zusätzliche Java-Programmierer eingestellt. Die arbeiteten nun fleißig an der nächsten Minecraft-Version, der 1.14. Allerdings waren sie alle neu und unerfahren im Minecraft-Code und mussten sich da erst einarbeiten. Kein Wunder, wenn die Programmierung noch nicht so gut geklappt hat. Und zehn neue Programmierer zu integrieren wird die ursprünglichen vier Programmierer viel Verwaltungszeit gekostet haben. Was wäre nun die logische Konsequenz gewesen? Richtig: Die Version 1.14 wird so lange korrigiert, bis sie gut läuft. Warum hat Mojang das nicht gemacht? Die Vermutung ist, dass Microsoft wieder den Termin für die gemeinsame Veröffentlichung dieses "Village & Pillage" genannten Updates vorgegeben hat. Und diesmal hat es funktioniert! Die Bedrock Edition 1.11.0 und die Java Edition 1.14 kamen beide im April 2019 heraus. Doch zu welchem Preis? Antwort: Die 1.14 war noch gar nicht fertig. Schnell hat Mojang Bugfix-Versionen hinterhergeschoben, um die offensichtlichsten Fehler zu beseitigen. Das könnte man als Spieler ja noch akzeptieren - wenn es denn konsequent zu Ende geführt würde. Aber mittendrin - nach der 1.14.4 - heißt es plötzlich: "Note that this does not mean that we think performance is perfect - we will keep working on performance optimizations for future versions." - Warum wird die 1.14 jetzt nicht mit weiteren Bugfix-Versionen fertiggestellt, sondern die 1.15 begonnen? Hat da Microsoft schon wieder einen gemeinsamen Veröffentlichungstermin vorgegeben? Man kann es nur vermuten.
 
Danke, Martin und Hytte (und alle anderen, am Text beteiligten Teamler :) ), für diesen sehr detaillierten Einblick in das, was in den letzten Stunden und Tagen passiert ist. Während man sich's als nicht ganz so amateurhaften Laien grob vorstellen konnte, so ist das hier doch ne Hausnummer. Super erklärt, und die Entschuldigung am Ende brauchts auch nicht. Ihr habt euer Möglichstes getan!

Es ist natürlich unglaublich schade, dass das Update nun nicht machbar ist, aber ich denke, ich spreche für die gesamte Community, wenn ich sage, dass wir auch auf 1.13 noch lange genug sehr viel Spass haben werden, hier, in unserer Heimat auf Unlimitedworld :love:
 
Wenn man sich ein wenig Zeit nimmt und sich den Text ordentlich durchliest, kann man viel Verständnis erlangen. Danke, dass ihr euch bemüht alle Spieler aufzuklären. Der Staff wird es sicherlich schaffen die 1.14 Spielbar auf den Server zu bringen. Ich wünsche euch viel Erfolg und Geduld. :)
 
Also ich habe jetzt bis zur Hälfte des 3. Aktes gelesen, dann habe ich leider nicht mehr viel verstanden. Aber bis zum Ende des zweiten Akts habe ich wirklich alles verstanden (und ich verstehe normalerweise gar nichts von Computern). Schön, dass ihr euch die Mühe macht, so viel zu schreiben, um uns das alles zu erklären. Vielleicht lese ich den Rest noch wann anders.
Viel Glück noch bei der 1.14.4-Arbeit ! :D


Ach, ich wusste gar nicht, dass das nicht fertig war. Na ja, Notch hätte halt einfach besser doch nicht verkauft. :/
Notch lacht sich eins. Mit den Verkauf hat der sich bestimmt genug gekrallt, dass es für ein ausgesorgtes Leben reicht
 
Notch lacht sich eins. Mit den Verkauf hat der sich bestimmt genug gekrallt, dass es für ein ausgesorgtes Leben reicht
Das ist natürlich ziemlich klischeehaft gesagt. Abgesehen davon glaube ich nicht, dass dem so ist.

Notch hatte mit seiner Firma bereits vorher sehr gut verdient und keine finanziellen Sorgen. Trotzdem war er sehr unglücklich. Seine große Freude war das Programmieren kleiner Spiele. Den Riesenerfolg, den Minecraft hatte, hatte er nicht geplant und konnte damit nicht umgehen. In seinem Abschiedstext sagt er, dass er Programmierer sei und kein Unternehmer, der eine immer größer werdende Firma leiten soll, die sich rapide zur Weltfirma entwickelte. Mit dem ganzen Verwaltungskram und den unerwarteten Problemen, die auftreten, wenn man weltweit agiert und Millionen User hat (z.B. Shitstorms) wollte er nichts zu tun haben. Nicht Geldsorgen, sondern sein Unglück war der Grund für den Verkauf.

Auf der anderen Seite liegt ihm sehr viel an seinem Lebenswerk Minecraft. Er wollte es nur an einen neuen Eigentümer verkaufen, wenn dieser willens und in der Lage ist, den begonnenen Weg fortzuführen. Mit Microsoft hatte er schon seit Jahren bezüglich der Pocket Edition zusammengearbeitet und gute Erfahrungen gemacht, daher seine Entscheidung für diese Firma. Und anhand der aktuellen Konstellation sieht man, dass er wohl festgelegt hat, dass die Java Edition fest in Stockholmer Hand bleibt. Und dass Mojang weiterhin das Sagen hat, was den Minecraft-Style betrifft (Es kam z.B. vor, dass die Snapshots der Bedrock Edition im Aquatic Update Texturen enthielten, die kurz darauf wieder entfernt und durch die Texturen der Java Edition ersetzt wurden). Wenn es der Java Edition schlecht geht, wird Notch bestimmt nicht lachen.

Eine etwas klischeehafte Vorstellung ist auch, dass man mit sehr viel Geld automatisch sehr glücklich ist. Viel Geld bedeutet auch einen hohen vermögenstechnischen und juristischen Verwaltungsaufwand und große Sorgen um einen möglichen Verlust. Mag man sich nicht selbst darum kümmern, braucht man vertrauenswürdige Personen, die das übernehmen. Doch wo viel Geld ist, ist auch viel Gier. Ausgesorgt ja, aber sorgenfrei? Ich glaube nicht.
 
Vielen Dank, nicht nur an alle Beteiligten für die ganze Arbeit, das Update vorzubereiten, sondern auch für die umfassende, schön geschriebene Erläuterung des einstweiligen Scheiterns. Diese Tranzparenz den Spielern gegenüber verdient ein extra Lob. :thumbup:

Ich hoffe, dass Mojang das Problem ernster nimmt, als die vielen, lange offenen Bugs und jetzt die Power hat, nicht nur mehr niedliche Tierchen zu implementieren, sondern sich auch wirksam mit Performance-Verbesserungen beschäftigen kann und dabei nicht durch Microsofts Produktpolitik behindert wird.
 
Super! Vielen Dank für den ausführlichen Bericht!

Ich war jetzt lange inaktiv und seit ca. zwei Wochen immer mal wieder richtig da und hab weiter gebaut. Man merkt im Vergleich zu früher, dass die Server Probleme haben Änderungen zu verarbeiten (Blöcke müssen zigfach neu abgebaut werden; Ich bin schon mehrere male in Blöcken stecken geblieben etc.). Das gab es zwar früher auch ab und zu (Bei vergleichbaren Spielerzahlen auf dem Server), aber es hat deutlich zugenommen.

Ich war damals als Microsoft die Firma quasi übernommen hat schon sehr skeptisch. Leider hat sich meinerseits, auch mit euren Ausführungen genau das bewahrheitet, was ich damals vermutet hatte. Man schiebt ein Update und ein "ach so supertolle Neuigkeit" nach, einfach mit man sagen kann "Schau mal".

Microschrott hat dieses Problem im eigenen Haus ja spätestens seit der Jahrtausendwende mit den Betriebssystemen (Nur eine der problematischen Sparten...). Angefangen hatte dies mit der ursprünglich sehr früh herausgebrachten Version XP, dann Vista (was ja die noch grössere Katastrophe war zu Beginn...) und dann mit der 8.0...

Leider scheint sich dies auch auf die "Fremdsoftwares" auszuweiten und Besserung scheint nicht in Sicht, da MS die Problematik nicht zu verstehen versucht, oder verstehen will.

Es ist wieder Typisch MS:
- Funktioniert es für den Single User und er merkt nicht, dass sein PC unnötige Ressourcen verschwendet: RELEASEN und vor allem: VERGÖTTERN
- Funktioniert es für den Server? Nein. Ist es MS egal: So ziemlich....

Ich hoffe, es finden sich einige bei Mojang, welche endlich MS Einhalt gebieten. Aber das ist wohl an der Realität vorbei... Schade... Das erste mal Spielte ich MC als Beta. Jetzt scheint es bei v13 stehen zu bleiben. Denn in den Single Player wechsel ich nicht und andere Server haben die gleichen Probleme. (Nebst dem, dass sie nicht mein Bedürfnis eines MC-Servers decken, was dieser Server bisher volle Kanne macht! ;-) )

Danke liebes Serverteam!
 
Ich war jetzt lange inaktiv und seit ca. zwei Wochen immer mal wieder richtig da und hab weiter gebaut. Man merkt im Vergleich zu früher, dass die Server Probleme haben Änderungen zu verarbeiten (Blöcke müssen zigfach neu abgebaut werden; Ich bin schon mehrere male in Blöcken stecken geblieben etc.). Das gab es zwar früher auch ab und zu (Bei vergleichbaren Spielerzahlen auf dem Server), aber es hat deutlich zugenommen.

Das liegt, zumindest grad jetzt, an der Geburtstags-Schnitzeljagd: Es sind viel mehr Spieler auf einem Minecraft-Server, als sonst üblich, denn sonst verteilt sich das meist recht gut auf alle Weltteile.
 
  • Gefällt mir
Wertungen: Dusti
Danke für diesen ausführlichen Bericht.Ich hatte vorher nur den Bug Report https://bugs.mojang.com/browse/MC-138550 woraus ich zwar die Fehler entnehmen konnte aber keine (für Laien)nachvollziehbaren Erklärungen mit Grafiken usw.

Zum Thema Microsoft:Ich kenne das Update Dilemma all zu gut ausdem Betriebssysteme Bereich.Dort ist es oftmals das selbe.Unausgereifte verschlimmbesserung die nachher auchnoch wesentlich mehr Reccourcen (CPU und Ram) brauchen
 
Zuletzt bearbeitet:

Benutzer, die dieses Thema gerade lesen

ONLINE 3 Spieler