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.
OS Windows10Home
java -jar -Xmx7168M -Dfile.encoding=utf-8 paperclip-605.jar
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)
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.
Nun, ich habe es versucht
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 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… 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.
Auch 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 Arbeit 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.
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.
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.) (Ich habe Rimokko gelöscht, weil ich mich später daran erinnerte, dass Rimokko der Weltname "Welt" war.)
Startzeit: 1 Minute 36 Sekunden Es wird mit dem Befehl / memory von Essential gemessen.
Ich werde versuchen, verschiedene Dinge aus der obigen Reproduktionsumgebung zu optimieren.
Auf 626 aktualisiert
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.
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.
Startzeit: 1 Minute 28 Sekunden Der freie Speicher nahm mit abnehmender Anzahl von Plug-Ins zu.
MySQL verbraucht mehr Speicher, aber E / A ist schneller.
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.
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.
Seit dem Ende der Entwicklung sind ungefähr anderthalb Jahre vergangen. Hören wir also auf.
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.
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.
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)
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.
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