[GO] Über die Optimierung des Vanille-Kontinents

Überblick

Die Herausforderung besteht darin, die Umgebung des öffentlichen Multi-Servers von Minecraft Vanilla Continent lokal zu reproduzieren und so weit wie möglich zu optimieren, um sie zu stabilisieren. Das Managementteam des Vanilla-Kontinents hat keine Genehmigung erhalten. Es ist ein persönliches Hobby.

Umgebung

OS Windows10Home

Fledermaus starten

java -jar -Xmx7168M -Dfile.encoding=utf-8 paperclip-605.jar

Datenbank

MariaDB für die bequeme Verwendung von XAMPP. Ich bin mir nicht sicher, ob der Vanilla-Kontinent MySQL oder MariaDB ist.


# mysql --version
mysql  Ver 15.1 Distrib 10.1.38-MariaDB, for Win64 (AMD64)

Erinnerung

7 GB Zuweisung Es scheint, dass der Vanilla-Kontinent 15 GB von 32 GB zuweist (siehe inoffizielles Wiki, alte Informationen und möglicherweise jetzt anders), aber dies ist die Grenze, da mein PC nur 16 GB hat.

Versuchen

Nun, ich habe es versucht

Versuchen Sie zu reproduzieren

Name des Plugins Ausführung
CoreProtect 2.16.3
dynmap 3.0-beta-3-160
WorldEdit 1.13.105
MorkazSk 1.2
ColoredSigns 2.2
Skript 2.3.6
Essentials 2.16.1.154
ClearLag 3.0.3
ArmorStandEditor 1.13-21
goBrush 2.0
skDragon 0.14.999
Chairs 5.0
Test(Selbstgemachter PL zur Überprüfung) 1.0-SNAPSHOT
SkQuery 3.6.4
WorldBorder 1.9.0
LWC 2.1.2-dd8c289
Votifier 1.9
ConsoleSpamFix 1.6.2
PowerNBT 0.8.9.3
Multiverse-Core 3.0.0-SNAPSHOT-b760
WorldGuard 7.0.0-beta-03;e51a220
SK-NBeeT 2.3.0
Citizens 2.0.25-SNAPSHOT (build 1669)
Sentinel 1.8.5 (build 242)
FastAsyncWorldEdit 1.13-breaking
skRayFall 1.9.15
LunaChat 2.8.9
Skematic 2.2b
PermissionsEx 1.23.4
skUtilities 0.9.2
EssentialsSpawn 2.16.1.154
UndineMailer 1.8.1
WorldEditSelectionVisualizer 1.6.5
SharpSK 1.6.3
MCBans 4.4.4
SkUniversal 2.6
WarpPortals 5.6.3
Skellett 1.9.6b
TuSKe 1.8.2-Pikachu-IronApollo-Patch-4

(Die obige Liste hat das Plug-In nur dafür in einer Minute geschrieben, da es überraschend ärgerlich ist, die installierten Versionen zu tabellieren.) Außerdem hat Citizens eine kostenpflichtige und eine kostenlose Version, aber dieses Mal habe ich die kostenlose Version nur zur Überprüfung verwendet. (Es gibt keinen Unterschied in der Funktionalität. Um die Motivation aufrechtzuerhalten, möchte ich, dass Sie nach Möglichkeit die kostenpflichtige Version verwenden.)

Ich werde es vorerst starten

Ich habe das oben genannte Umfeld vorbereitet, der EULA zugestimmt und es vorerst gestartet. Da MCBans usw. enthalten sind, weiß ich, dass es nicht auf einmal gestartet wird. Jedoch… image.png ClearLag, ein Plug-In, das abgelegte Gegenstände sammelt und Verzögerungen durch regelmäßiges Löschen von Mobs (die wahrscheinlich auf dem Vanilla-Kontinent deaktiviert sind) verringert, spuckte Fehler aus und konnte nicht gehorsam gestartet werden. Bedeutet "java.lang.IllegalArgumentException: Sammlung ist leer", dass die erforderlichen Elemente in der Konfigurationsdatei nicht gelesen werden können? → Als ich es durch die folgende Gabel ersetzte, verschwand es, bevor ich es wusste.

AuchImage.png Ein NBT-Bearbeitungs-Plug-In namens PowerNBT hat ebenfalls einen Fehler mit einem Befehl ausgelöst, der beim Start aufgerufen wurde. In Anbetracht von "java.lang.RuntimeException: keine solche Methode" und den Quellen darunter scheint es nicht möglich zu sein, mit der Funktion "Reflektion" direkt auf das Serverprogramm zuzugreifen. Diese Methode ist nicht die empfohlene Methode und muss bei jedem Versions-Upgrade neu geschrieben werden. Sie tritt daher auf, wenn das 1.12.2-Plug-In in 1.13.2 installiert ist. Dieses Plug-In scheint in 1.12.1 nicht mehr aktualisiert zu werden, sodass dieser Fehler anscheinend auftritt. Als Ergebnis einer kleinen Suche wurde festgestellt, dass die Gabel dieses Plug-Ins 1.13.2 zu unterstützen scheint, daher werde ich sie dort ersetzen. Ausgeliehene Gabel: https://github.com/steakteam/PowerNBT/releases Jetzt ist der Power NBT-Fehler verschwunden. Es scheint, dass die ursprüngliche Familie das Plug-In namens TuSKe nicht unterstützt, daher habe ich es durch eine Gabel ersetzt. Ausgeliehene Gabel: https://github.com/IronApollo/TuSKe/releases

Das Ergebnis der obigen ArbeitImage.png Ein Portal-Plug namens WarpPortals gibt einige Fehler aus (wird ignoriert, da das Sammeln von Statistiken des Plug-Systems kein Problem darstellt). Es wurde jedoch bestätigt, dass die anderen problemlos gestartet werden können. Diesmal ist dies die Reproduktionsumgebung.

Indem ich das sage

Da die Datenbank im oben genannten Startzustand überhaupt nicht verwendet wird, stellen Sie sie so nah wie möglich an der Umgebung des Vanille-Kontinents ein. image.png

Geändert, um CoreProtect und Modern LWC in MariaDB zu speichern. Dynmap unterstützt auch MySQL (MariaDB), aber da es keine Beweise dafür gab, dass es in MySQL gespeichert wurde, wird es in der Reproduktionsphase weggelassen.

Außerdem gibt es auf dem Vanille-Kontinent normalerweise 9 Welten, Nether, 5 Reset-Welten und Ereigniswelten (soweit ich weiß). Daher wird auch bei dieser Überprüfung nur die Anzahl dieser Welten vorbereitet. (Die weltweite Generation ist moderat, weil die Spezifikationen des PCs dem nicht standhalten können.) image.png (Ich habe Rimokko gelöscht, weil ich mich später daran erinnerte, dass Rimokko der Weltname "Welt" war.)

Lassen Sie uns die aktuelle Situation vorerst messen

Startzeit: 1 Minute 36 Sekunden Es wird mit dem Befehl / memory von Essential gemessen. image.png

Optimierung

Ich werde versuchen, verschiedene Dinge aus der obigen Reproduktionsumgebung zu optimieren.

Aktualisierung der Paper Spigot-Version

Auf 626 aktualisiert

Skript Plugins entfernen

Das Skript-System ist bekannt dafür, dass es schwer ist, daher wird es entfernt, und die darin implementierten Funktionen werden von Plug-Ins wie Java / Kotlin implementiert, um das Gewicht zu reduzieren.

Migrieren Sie PermissionEx nach LuckPerms

Da die Entwicklung von PermissionEx bereits abgeschlossen ist, kann eine zukünftige Optimierung nicht erwartet werden, und dies ist nicht gut für die Sicherheit. Daher werden wir zu LuckPerms wechseln.

Versuchen Sie vorerst, bis hierher zu messen

Startzeit: 1 Minute 28 Sekunden image.png Der freie Speicher nahm mit abnehmender Anzahl von Plug-Ins zu.

Ich habe versucht, Dynmap MySQL zu machen

image.png MySQL verbraucht mehr Speicher, aber E / A ist schneller.

Warp-Portale ersetzen (diesmal nicht durchgeführt)

WarpPortals ist ein altes Plug-In, und obwohl es mit 1.13.2 nicht funktioniert, gibt es keine Garantie dafür, dass es in Zukunft funktioniert. Ich denke, Sie sollten in Betracht ziehen, es zu ersetzen.

Schlussfolgerung / Diskussion

Skript ist kein Plug-In für große Makrelen

Da Skript seinen Inhalt in einer Textdatei beschreibt, braucht IO Zeit. Je mehr Erweiterungs-Plug-Ins installiert sind, desto mehr Speicher wird verbraucht. Wenn Sie mit Skript implementieren und einen Plug schreiben, verfügt der Plug über einen höheren Freiheitsgrad, z. B. Optimierung, und es gibt viele Möglichkeiten. Wenn es also keinen besonderen Grund für Skript gibt, ist es besser, mit einem Plug zu implementieren. Ich denke (dies ist meine Meinung. Wenn Sie Einwände oder Vorschläge haben, hinterlassen Sie bitte einen Kommentar). Bei der Implementierung einer Kombination verteilter Plug-Ins sollte dies berücksichtigt werden, da sich diese nicht ändert, wenn die Anzahl zu groß wird.

Stoppen Sie PermissionEx

Seit dem Ende der Entwicklung sind ungefähr anderthalb Jahre vergangen. Hören wir also auf.

Über Saba Ochi

In letzter Zeit kann es auf dem Vanilla-Kontinent viele Male am Tag vorkommen, aber bei dieser Überprüfung war es nicht möglich, die Makrele zu reproduzieren, da die Startzeit des Servers kurz war, daher die Details der Ursache Ist nicht bekannt. Ich habe lange darüber nachgedacht, es zu starten und zu überprüfen, aber ich konnte es nicht, weil ich es bequem mit mir herumtragen konnte.

Berücksichtigung der Einführung von Reverse Proxy

Es gibt einen Reverse-Proxy, der die Belastung des Servers verringern oder als Schutz gegen DDoS dienen kann, indem ein anderer Server zwischen Server und Player eingefügt wird. Auf dem Vanilla-Kontinent ist DNS jetzt direkt an den Server gerichtet, was das Starten eines Angriffs sehr einfach macht. Ich denke, Sie sollten die Einführung eines Reverse-Proxys in Betracht ziehen.

Über das Betriebssystem

Angesichts des 32-GB-Speichers denke ich, dass die 15-GB-Zuweisung dem Betriebssystem zu viel Speicher gibt. Solange das Betriebssystem Windows ist, kann nicht geholfen werden. Durch Ändern des Betriebssystems auf Windows Server oder Linux (CentOS usw.) kann jedoch der vom Betriebssystem belegte Speicher reduziert, der dem Server zugewiesene Speicher erhöht und Linux verwendet werden. In diesem Fall erhalten Sie detailliertere Informationen wie die Speichernutzung und die CPU-Auslastung als unter Windows. Wenn es Leute gibt, die mit Linux umgehen können, ist es besser, Linux zu verwenden. (Niedrige Priorität)

Schließlich

Verzeihen Sie mir die Verwaltung des Vanille-Kontinents, insbesondere Herrn Tama, den Besitzer der Saba, und den Autor, der ein Sabamin ist, obwohl er normalerweise den Server verwaltet. Vielen Dank für Ihre fortgesetzte Unterstützung bei der Serververwaltung.

Hinzufügung / Korrektur

2019/5/28 Auf Twitter wurde darauf hingewiesen, dass es irreführend sein würde, also habe ich es überarbeitet. Auch klargestellt, dass es die Meinung des Autors ist.

Recommended Posts

Über die Optimierung des Vanille-Kontinents
Denken Sie an Transformation Janken durch Optimierung
Über Menüs durch Kombinationsoptimierung nachdenken
Informationen zur Optimierung der Berechnungsgraphenoptimierung in tf.function
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern