Minecraft Server laagt Root Server L DDR4

  • Hi, ich habe ziemlich starke laags z.t bei meinem neuen Root mit SSD. Debian 8, Java 8, Multicraft pre14. Bspw. verschwinden steine erst 2 sekunden nach dem abbauen. Ram und CPU sind nur minimnal belastet alle user haben ähnliche probleme, kein packet loss bei netcup. hoffe inständig auf tipps.

  • Hallo,


    ich weiß nicht wie sehr es noch auf das aktuelle Minecraft zutrifft, da ich ein wenig aus der Materie raus bin, jedoch die Frage, wie viel Arbeitsspeicher ist dem ganzen zugeordnet? Wie sehen deine Parameter für den Start der Applikation und die Konfiguration dazu? Ich denke mit der Info kann man das sicher besser eingrenzen.

  • Versuch Spigot zu nutzen. Die aktuellen Snapshots laufen leider sehr komisch und laggy, egal wie viel Leistung man hat.
    Ich habe den gleichen Root und bei mir läuft alles Laggfrei, auch bei viel mehr Spielern.

  • Du bist wirklich der typische Admin ala 0815, script laden das Command ein Tippen und schreien weil es nicht funktioniert. Weist du Software die ausgeführt wird erzeugt logfile(s) in denen man lesen kann was schief gelaufen ist(oder ob es funktioniert hat.). In deinem Fall steht schon in der Ausgabe was nicht funktioniert hat, mit dem Fehler kann man Google fragen. Meine Frage wäre noch, loggst du dich direkt beim SSH mit root ein?

  • Auch wenn dieser Beitrag schon 3 Monate alt ist, so antworte ich doch darauf aus zwei Gründen:

    • Der Thread steht aktuell immer noch an zweiter Stelle in der Threadliste des Gameserver-Forums.
    • Die Informationen, die ich mich anderen Usern teilen möchte werden hoffentlich (wenn jemand die Suchfunktion nutzt) das Erstellen eines ähnlichen Threads unnötig machen.

    Zunächst einmal möchte ich verhindern, dass ein falscher Eindruck über die Leistungsfähigkeit der Server von netcup entsteht.
    Ich betreibe gleich mehrere Minecraft Gameserver (Instanzen) auf eben einem solchen "Root-Server L" mit SSD (6. Generation) wie vom Threadersteller beschrieben.
    Auch mit über 30 Usern läuft das Spiel noch absolut ohne Lags. Und das obwohl recht Ressourcenintensive Plugins installiert sind, wie etwa DynMap.


    Die Probleme des Threaderstellers sind also in der Konfiguration zu suchen.





    Daher an dieser Stelle ein paar Tips zur Konfiguration des Servers um diesen auf Performance zu optimieren.
    Einige Punkte wurden von meinen Vorrednern bereits genannt (z.B. die Verwendung von Spigot) doch möchte ich in meinem Posting den Fokus darauf legen, klar verständliche und hilfreiche Hinweise zu geben.



    Ich werde meine Tips staffeln nach Hinweisen für Einsteiger (E), Fortgeschrittene (F) und Profis (P).




    Übersicht

    • Wahl der Linux Distribution
    • Partitionen für Minecraft optimieren
    • Partitionen für SSD optimieren
    • Installation von Spigot
    • Konfiguration der Minecraft Server Instanz


    Wahl der Linux Distribution


    E:
    Hier kann man theoretisch nicht viel falsch machen. Denn Im Grunde läuft Minecraft auf jeder Distribution!
    Wenn man keine Systemressourcen an ungenutzte Dienste verschwenden möchte, sollte man diese entweder deaktivieren oder eine Distribution wählen, welche mit sehr wenig vorinstallierten Paketen kommt.


    F:
    Sollte die Distribution einem die Wahl zwischen generischen Paketen (z.B. x86_64) und CPU-Optimierten Paketen (z.B. Intel64-haswell) lassen, sollte man die optimierten Pakete nehmen.
    Hierbei gilt jedoch zu beachten dass die Wahl eines für die falsche CPU optimierten Paketes unter Umständen dazu führt dass das System schlechter oder garnicht läuft. Bei Optimierten Pekaten ist immer zu prüfen, ob diese für die jeweilige CPU-Architektur ausgelegt sind.
    Hintergrund ist, dass man ein Programm so kompillieren (= vom Quellcode in Maschinencode übersetzen) kann dass es auf möglichst vielen CPU-typen läuft (was die meisten Distributionen machen), oder aber es auf eine Architektur optimieren kann, wodurch bei einem Intel-Optimierten Programm zum Beispiel alles weggelassen werden kann was speziell für AMD CPUs ist.
    Wenn man sich unsicher ist, ist man aber mit den Generischen Paketen besser beraten! Der Performance-Zuwachs liegt geschätzt im einstelligen %-Bereich.


    P:
    Ich selber verwende eine Distribution, welche alle Pakete CPU-optimiert
    aus dem Quellcode kompilliert. Ich nenne den Namen bewusst nicht um
    Anfänger nicht auf eine Fährte zu locken, die von sehr viel Frust
    geprägt sein kann, wenn man nicht wirklich weiß was man da tut. Profis werden sicher wissen oder schnell herausfinden wovon ich rede.



    Partitionen für Minecraft optimieren


    E:
    Beim Einrichten der Festplatte lege mindestens folgende Partitionen mit den genannten Dateisystemen an:

    • /boot gemäß Empfehlung der Distribution. Wenn keine genannt ist wähle 128 MB und als Dateisystem ext2
    • swap Doppelt so groß wie dein RAM
    • / Ich empfehle als Dateisystem ext4, die Größe hängt davon ab wieviel Software Du neben Minecraft installieren möchtest. 30 GB sollten fast immer ausreichen
    • /minecraft Lege eine gesonderte Partition für Minecraft an. Ich empfehle die Formatierung mit XFS da dieses Dateisystem performanter bei kleinen Datein ist wie ext4.


    Anmerkung zum Swap:
    Richte eine großzügige SWAP-Partition ein. Diese wird zwar optimalerweise nie benötigt, aber im Fall der Fälle dass dein RAM
    vollaufen sollte kann SWAP die Stabilität des Servers (unter Geschwindigkeitseinbußen!!) gewärleisten. Permanentes Swappen macht den Server jedoch nicht nur langsam, sondern ist auch äußerst ungesund für die SSD.
    Prüfe von Zeit zu Zeit mit dem Befehl "free -h" die Auslastung von RAM und Swap. Sollten unter normalen Betriebsbedingungen jemals mehr als ein paar wenige MB im Swap liegen, überprüfe dringend Dein Setup oder denke über ein Upgrade auf einen Server mit mehr RAM nach!


    Anmerkung zur Minecraft Partition:
    Da Minecraft die Weltkarte in Form vieler kleiner Datein ablegt ergeben sich Performancegewinne aus der Verwendung des XFS Dateisystems. Ähnliches gilt für Plugins wie z.B. DynMap.
    Das Speichern von Minecraft auf einer gesonderten Partition verhindert zudem dass dein Linux nicht wegen einer vollgelaufenen Festplatte stehen bleibt, sollten bei Minecraft aus irgend einem Grund enorm viele Daten erzeugt werden (z.B. viel zu große DynMap oder ein defektes Plugin das in eine Schreib-Endlosschleife gerät).



    Partition für SSD optimieren


    E:
    Aktiviere die TRIM-Funktion der SSD.
    Sollte Deine Distribution beim Partitionieren und Formatieren der Festplatte keine entsprechende Option anbieten, ist dies eher etwas für Fortgeschrittene User.


    F:
    TRIM Manuell aktivieren
    Editiere die Datei /etc/fstab und gebe bei den Dateisystemparametern die für das Dateisystem entsprechende Kommando ein.
    Für EXT4 sähe dies Beispielsweise wie folgt aus:


    /dev/vda3 / ext4 noatime,discard 0 1


    noatime unterdrückt dass bei jedem lesenden dateizugriff die access-time aktualisiert wird, was unnötige Schreiboperationen verursacht.
    discard aktiviert automatisches Anwenden der TRIM funktion der SSD.


    P:
    Optimiere das Alignment der Partitionen.
    Dies muss natürlich beim Partitionieren und vor dem Erstellen der Dateisysteme erfolgen.
    Wenn Du die SSD mit fdisk partitionierst wähle zuerst die Option "g - create new empty GPT partition table".
    Damit weichst du vom Standard-DOS Kompatiblen Partitionsschema ab. GPT ist nicht auf 4 primäre Partitionen beschränkt und achtet bei SSDs auf ein richtiges Allignment.
    Nun lege wie gewohnt Partitionen an. Abgesehen davon dass die Wahl zwischen Primärer und Extended Partition entfällt ändert sich nicht viel. Jedoch beim festlegen der Partitionstypen haben sich gegenüber dem üblichen DOS kompatiblen Partitionsschema die disk-layout bezeichnungen geändert. Drücke L für eine Übersicht! Zum Beispil ist eine Linux-Swap Partition nun nicht mehr vom Typ "82" sondern "14".
    Außerdem solltest Du eine 3MB kleine Partition vom Typ "4 - BIOS Boot" anlegen, wenn Du zu BIOS kompatibel bleiben möchtest.
    Hier wird Grub ein paar bootrelevante Daten ablegen, die bei einem DOS-Kompatiblen Partitionsschema im MBR landen.
    Diese Partition muss nicht in der /etc/fstab eingetragen werden, da sie nie gemountet wird.



    <fortsetzung folgt>

    [table='liebe Grüße - schentuu, ']
    [*]~[*] Tutorial-Empfehlung: vi(m) lernen
    [*]Betreibt 3 netcup Root-Server mit Funtoo-Linux [*] IRC von Kunden für Kunden: #nc-kunden (iz-smart.net)
    [*]darunter Minecraft Gameserver, git server, etherpad u.v.m.[*]Für Server Anfänger: Linux Selbsttest
    [/table]

  • <fortsetzung>



    Installation von Spigot


    An dieser stelle vermute ich die Problemursache des Threaderstellers.
    Spigot
    ist eine Variante von Minecraft, die mit Patches versehen wurde um die
    Performance zu erhöhen und um Plugins zu ermöglichen.


    Aus
    Copyright-Gründen darf Software, die unter der Gnu Public License (GPL)
    veröffentlich wurde nicht ohne Quellcode weitergegeben werden.
    Spigot
    wird unter der GPL veröffentlicht. Daher muss es alle Quelltexte
    enthalten. Da Spigot aber auch Code aus Minecraft selber enthelt,
    welches nicht Quelloffen ist, kann dieser Code nicht mitgeliefert
    werden.
    Dieses Dilemma wurde von den Spigot-Entwicklern durch die Erstellung eines build-script gelöst.


    Das
    Script nimmt die Quelloffenen Teile von Spigot und das nicht
    Quelloffene Minecraft, extrahiert (decompilliert) die benötigten
    Codezeilen aus Minecraft, welche es aus Rechtlichen Gründen nicht im
    Lieferumfang enthalten darf, und fügt alles live auf dem Server zu einem
    Spigot-Server-Programm zusammen.



    Leider macht dieses Build-Script es Anfängern eher schwer, Spigot zu installieren.


    Daher habe ich ein zusätzliches script geschrieben, welches die Handhabung von Spigot etwas vereinfachen soll.
    Den Quellcode dafür könnt ihr Euch aus meinem Posting im Spigot-Forum kopieren.
    Kopiert den Code in eine Datei, nennt diese "spigot_patch_script.sh" und achtet darauf, dass die Datei Ausführ-Rechte hat.
    (chmod 700 spigot_patch_script.sh)


    Folgende Vorraussetzungen müssen getroffen sein, damit Spigot auf dem Server gebaut werden kann:

    • Ihr müsst als root angemeldet sein
    • wget muss installiert sein
    • git muss installiert sein
    • ein JDK (Java development kit) muss installiert sein, ein JRE (Java Runntime Enviroment) reicht nicht aus
    • Das JDK muss für root die default java Umgebung sein


    Das von mir geschriebene Spigot patch script findet ihr hier: https://www.spigotmc.org/threa…ot_build_script-sh.40239/
    Bitte lest Euch auch meine Kommentare dort durch. Ich hoffe Ihr seid der englischen Sprache mächtig ;)



    Konfiguration der Minecraft Server Instanz


    Minecraft ist leider sehr RAM-hungrig.
    In meinem Fall betreibe ich sogar mehrere Serverinstanzen auf meinem Server um unterschiedliche Welten anbieten zu können.
    Die Hauptwelt läuft bei über 30 Usern flüssig mit folgenden Einstellungen:

    • cpu_use (in diesem Fall 3) gibt an, wieviele Threads Java nutzen darf. So bleibt
      immer eine von 4 CPUs für alle anderen Anwendungen (z.B. ein apache für
      eine Webseite, eine SQL-Datenbank für Plugins und natürlich Linux
      selbst) frei.
    • Maxheap gibt an wieviel RAM (in MB) Java maximal reservieren soll. In meinem Fall 6 GB
    • Minheap gibt an, wieviel RAM (in MB) Java minimal reservieren soll. In meinem Fall 128 MB

    Der Befehl zum Starten von Minecraft, den mein Startscript auszuführen hat lautet wie folgt:


    Code
    1. cpu_use=3
    2. maxheap=6144
    3. minheap=128
    4. # and now start minecraft inside a screen session
    5. /usr/bin/screen
    6. -- -DmS minecraft-server1 /usr/bin/java -Xmx${minheap}M -Xms${maxheap}M
    7. -XX:ParallelGCThreads=$cpu_use -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
    8. -XX:+CMSIncrementalPacing -XX:+AggressiveOpts -XX:MaxPermSize=128M -jar
    9. $path_to_spigot_jar nogui



    Abschluss


    Ich
    hoffe mit diesem doch sehr ausführlich gewordenen Posting einigen Usern
    geholfen zu haben, einen performanten Minecraft Server auf einem
    rootserver von netcup aufzusetzen.
    Viel Spaß! :)


    Ich habe ca. 3h am Erstellen dieses Postings gearbeitet.
    Wenn
    es Euch gefällt, könnt ihr mir einen kleinen Betrag via PayPal
    schenken, welcher für netcup Produkte ausgegeben werden wird.
    Mein PayPal konto, welches ich ausschließlich für netcup nutze lautet: der nachfolgende Teil wurde durch [netcup] Kai ENTFERNT!

    [table='liebe Grüße - schentuu, ']
    [*]~[*] Tutorial-Empfehlung: vi(m) lernen
    [*]Betreibt 3 netcup Root-Server mit Funtoo-Linux [*] IRC von Kunden für Kunden: #nc-kunden (iz-smart.net)
    [*]darunter Minecraft Gameserver, git server, etherpad u.v.m.[*]Für Server Anfänger: Linux Selbsttest
    [/table]

  • Als ich heute früh die eher mäßige Antwortqualität in diesem Thread sah verspührte ich das Bedürfnis damit mal aufzuräumen und es richtig zu erklären.
    Dass ich dabei über die Zeichenlimitierung für ein Posting gerate und 3h dafür brauche war aber nicht so geplant. Das hat sich irgendwie ein wenig verselbstständigt :D


    Und das mit der PayPal Anmerkung könnt ihr wenn es euch nicht gefällt gern ignorieren.
    Es ist ja keiner verpflichtet darauf einzugehen.
    Ich dachte nur dass es okay ist sowas zu erwähnen nachdem man 3h an einer ausführlichen Erklärung gebastelt hat. Hab mich vielleicht auch ein bissl davon hinreißen lassen dass der Minecraft server den ich bei netcup hoste von dessen usern spendenfinanziert ist...
    Nichts für ungut, ich wollte damit keinem zu Nahe treten!

    [table='liebe Grüße - schentuu, ']
    [*]~[*] Tutorial-Empfehlung: vi(m) lernen
    [*]Betreibt 3 netcup Root-Server mit Funtoo-Linux [*] IRC von Kunden für Kunden: #nc-kunden (iz-smart.net)
    [*]darunter Minecraft Gameserver, git server, etherpad u.v.m.[*]Für Server Anfänger: Linux Selbsttest
    [/table]