+ Antworten
Seite 1 von 22 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 213
  1. #1
    Obsidianforscher Avatar von Jobsti
    Registriert seit
    29.10.2010
    Beiträge
    2.138
    Minecraft
    Jobsti

    Server-Performance Diskussion

    So, da es keiner macht, erstell ich das Thema

    Ich habe schon recht viel dazu gepostet, nur eben in verschiedenen Themen als Posts,
    hier kann man mal alle Erfahrungen von allen Zusammentragen.

    Im Bukkit Forum tut sich da net sooo viel:
    http://forums.bukkit.org/threads/som...servers.27647/


    Wie es derweil bei uns ausschaut:

    Server:
    - OS: ESXI 4.1, Boot per USB Stick
    - VMs: 3
    - CPU: Phenom II X4 @ 4x 3,8gHz
    - Ram: 16 GB DDR3 Ram
    - Neustarts: Normal NIE (Bisher, 2x Hardwaretausch)
    - Sonstiges: 3Ware Hardware Raid* (keine Software Controller!) mit Samsung F1. USV
    * Hardware Raid = 2x Lesespeed im Raid-1, 1x Schreibspeed

    Minecraft-Server:
    - OS: Ubuntu Server 11 x64 als VM
    - JRE/JVM 1.7 x64
    - 10gb Ram und voller CPU fest zugeteilt
    - Raid-1, 16GB für Linux, 60Gb für MC
    - Sonstiges: 4x mySQL Datenbank, FTP + Webserver laufen zusätzlich
    - 18 Slots
    - 4 Welten (3 davon begrenzt auf Radius 750)
    - 60 Plugins, davon 2 Loggin/Rollback-Plugins jeweils mit mySQL Datenbank (Viel Kleinkram Plugins, viel für Loggin und Adminzwecke)
    - Plugins, welche die meisten Ressourcen fressen: mcMMO (ram), WorldGuard(cpu), BigBrother(ram), Hawkeye(ram), Minebackup(cpu), WAR (ram!), Dynmap HD (HDD, bissel CPU)
    - Derweil Craftbukkit #1337
    - Gestartet mit XMn2G, Xms4G, Xmx8G (weitere Startparameter rück ich nicht raus, is ne komplette Zeile)
    - Server-Neustarts: alle 4h automatisch
    - VM Neustarts: Nur bei Updates, bisher 2x in 3/4 Jahren.
    - Backups: Alle 30 Min safe-all, alle 90 Minuten werden alle Worlds gebackupt, max Backups 3 Tage (ab und an manuelle, Ältere), Kompression gering.


    Wie's läuft/Beobachtungen:

    Upload:
    Pro User 7-15 kb/s, bei Teleports (Warps, Portale, Tode, /home...) kurzzeitiger Anstieg auf 150-400 kb/s
    CPU:
    Mit 18 User online knapp 30-50% CPU Last, bei neuen Logins oder Weltenwechsel ganz kurze 80-90% peaks
    Ram:
    Java belegt derweil um die 2,5 bis 3,8gb nach 3-4h. Bei längerer Laufzeit (5-8Std.) ~4,2gb

    Die Performance ist allgemein etwas besser geworden seit den 1.8er builds, Traffic wurde seit den 1.7 builds auch schon mehrfach optimiert.
    Die benötigten Ressourcen verdoppeln sich nicht bei Verdopplung der User (Außer Upload)
    Mit weniger Plugins sollte die Last bei ~20 Usern so bei 20-40% schwanken, oder sogar noch geringer und weniger Ram schlucken, je nach Plugins und Parameter.


    Bisher getestete OS':
    Windows XP: kannste knicken
    Windows Server 2000 Ent.: Auch net viel besser
    Windows Server 2008 RC1: Ebenfalls schlecht
    Windows Server 2008 RC2: Wurde schon einiges besser, dennoch kein Vergleich zu Linux, vor allem was CPU anbelangt
    Open Suse Linux X64: Im Vergleich zu Windows schon ein enormer Sprung, CPU Last unter der Hälfte. Dafür macht's den Ram nicht mehr frei, somit alle 2-3 tage die VM restarten
    Ubuntu Server 11 x64: Bisher die beste Performance, maximal hatte ich 10h am Stück getestet, ging 1A. Restarts benötigt die VM absolut keine, bin glücklich.
    Es neueste Debian x64: hier berichten einige, dass es noch etwas besser laufen soll, wie viel kann ich net sagen, schätze aber im Vergleich zum Ubuntu, ist Debian dann nurnoch das i-Tüpfelchen

    Upgrade CPU:
    Demletzt wurde von einem günstigen Athlon II X4 2,8gHz auf einen Phenom II X4 3,8gHz gewechselt.
    Den Unterschied merkt man doch schon deutlich, nicht nur die mHz, sondern auch der größere Chache machen's aus.
    Wie viel Performance das Upgrade auf einen reinen Server-CPU bringen würde (Xenon/Opteron) kann man nur erahnen,
    ich denke bei identischem Tahkt aber nicht mehr so viel im Vergleich zu einem Phenom II, respektive I5/I7.

    Top/Monitor - Last: (ich nutze idR. kein Top, sondern nen "live"-gui-Monitor)
    Java nutzt bekanntlich ja nur einen Kern/CPU, jedoch wird zwischen den Kernen gewechselt. Auch wenn man Java fest einem kern zuordnet,
    konnte ich kein Performance-Unterschied feststellen, außer, dass Funktionen wie Turbocore besser funktionieren!
    Hierbei habe ich beobachtet, dass "Top" eher die maximale Last angibt, nicht den Durchschnitt.
    Gerade vorhin habe ich gesehen: Last 4-11%, Durchschnitt also 7%, Top gibt allerdings 12% aus.
    Wenn Top zB. sagt: 122%, frisst's java um die 60-80% auf einem Kern, der Rest sind andere Dienste, oder kommts eher durch's "swichen" so meine Beobachtung,
    da Top alle Kerne mit einbezieht.


    Optimierungstipps:
    - Definitiv auf ein Linux umsteigen, 64 bit sollte mittlerweile eh Standard sein.
    - java 1.7 X64 hat schon etwas bessere performance gebracht, zudem braucht es weniger Startparameter als 1.6, da vieles schon fest "eingebaut" ist.
    - Passende Startparameter für Java nutzen, siehe hierzu die JavaDocs
    - Net wild einen Server aufsetzen und tausende Portale/Warps usw. setzen, hierbei ebenso auf die Hardware achten.
    - Plugins optimieren!:
    - Schaltet zB die High-freq. Flags & Scheduler in Welten aus, in denen man sie net brauchst.
    - Schaltet den Move-Event aus und nutzt für Region-Nachrichten andere Plugins
    - Nutzt low-priority-inserts
    - Lasst net alles Loggen, Leaf Decay und Fire braucht kein Mensch.
    - Backups nicht Komprimieren lassen, oder die Stufe auf niedrig stellen.
    - Nutzt Ebeans storage anstatt Cached
    - Einfach mal weniger Portale und Warps zur Verfügung stellen, gibts im SP ja auch net.
    - Bei großen Welten ggf. die Mobanzahl beschränken.
    - Caches, wie zB. bei LWC beschränken
    - usw. usw.

    Man kann wirklich sehr sehr viel optimieren, gerade bei den einzelnen Plugins,
    nicht nur die Java Startparameter machen's

    Zusatztipps für schwache CPUs:
    Legt nen maximalen Radius der Welt fest (Border) und lass die Chunks darin schon alle vorher erstellen, somit gibt's keine Lags, wenn mehrere User
    die Welt erkunden.
    Zusätzlich könnt ihr eure Dynmap auch schon die Welt komplett rendern lassen, somit werden nurnoch Bilder veränderter Chunks neu erstellt.
    Bei schwachem CPU solltet ihr auchkeine HD Maps nutzen, oder diese eben auf Low oder Lowest rendern.
    Backups nicht komprimieren lassen, oder Kompression auf schwach stellen.


    Sonstiges:
    Vorgestern hat sich das Java komischerweise mit 8gb voll gefressen, was dem Linux nicht gefallen hat und das System fast zum Halt brachte.
    Das Linux hat nun 10gb bekommen, der Server XMn2G, XMs4G und XMx8G.
    Natürlich ein Fehler meinerseits, ich kann net dem Server 8GB geben, wenn das Linux nur 8Gb zur Verfügung gestellt bekommt
    (Aber bisher kam es auch noch net vor, dass so viel Ram belegt wurde)

    Danach gab's direkt nen Belastungstest mit TNT
    Bei ca 4500 TNT gibt's 5 Sekunden Lag (100% cpu Peaks ), das paar mal gemacht (~20000 TNT), bis die Kiste seine 7,9GB Ram frisst, weiter hat sichs net gefüllt.
    /Lagmem zeigte minimal 19% freier Ram an, weiter hab ich die Kiste net voll bekommen. Lief dennoch alles Lagfrei damit.

    Doof: es Java macht sich net wieder frei, das bleibt dann bis zum Neustart bei 19-23% freier Ram.
    Auch ein Grund warum wir alle 4h automatisch Neustarten lassen.
    Ein Neustart dauert knapp 10 Sekunden, somit kann man das den Usern auchmal alle 4h zumuten, dafür rennt auch alles lagfrei, egal was ingame so angestellt wird!


    Kurzum:
    Sind die Plugins sparend eingestellt (geht bei vielen ja, siehe WG, da gibts gleich 4 Optionen pro Welt die Last verursachen!)
    Tipp: Lagts, nutzt /stoplag, danach /stoplag c, kann enorm helfen, wie unser TNT Test bei >4500 TNT zeigte
    Warps, Teleports, somit auch Tode, verursachen CPU LastSpitzen, um so mehr also Sterben/Porten um so eher kommt der CPU an's Limit.
    Pro User benötigt man ca 7-15kb/s Upload, beim Warpen kurze 150-400 kb/s Peaks.
    Tiere und Mobs fressen CPU, um so mehr Welten damit um so mehr CPU Last, wobei Skylands wohl am wenigsten frisst.
    Multi CPU oder mehrere kerne bringen leider nix, da immer nur eine genutzt wird, somit lieber auf mehr mHz setzen.
    CPU Last und Ram steigt mit verdoppelter Useranzahl nicht gleichmäsig an, sondern weniger.



    Ich freue mich auf eure Diskussion!
    Was nix bringt:
    Wenn ihr eure Hardware postet, aber kein Mensch weiß, ob's ne VM ist oder nen Root mit (nicht) vollen oder geteilten Ressourcen.
    Auch postet bitte was ihr so beobachtet habt, wie die Performance bei euch ausschaut usw.
    Posts wie: "Root 8x 10 ghz, 128gb ram, rennt super lagfrei, nix festgestellt" könnt ihr euch sparen!


    EDIT: 14.11.11
    Wichtig:
    http://minecraft.de/showthread.php?6...-Weltenwechsel.

    Problem beim Weltenwechsel und auch teilw. neuen Logins behoben!


    Edit: 18.04.2012

    Bittesehr, alle Benchmarks von mir.
    Ramdisk aus Bukkit-Forum (somit keine näheren Infos)



    Ist natürlich nur nen grober Vergleich, für einen korrekten, müssten alle Platten leer, frisch und identisch formatiert sein und nicht als OS-Laufwerk laufen.

  2. #2
    Obsidianforscher
    Registriert seit
    29.04.2011
    Beiträge
    3.187
    Oh, Minecraft ließe da sehr viel Platz für Optimierungen. Hab mir da auch mal ein paar Gedanken dazu gemacht, was man Softwareseitig noch so optimieren könnte.
    Server könnten Chunks z.B. auf mehreren Kernen generieren (falls Chunks generiert werden müssen). Die Simulation der Welt (Spawnen von Monstern, Bewegungen von Monstern, Wachstum von allem möglichen, ...) könnte auf mehrere Kerne verteilt werden und zwar pro Spieler, sobald sich deren Umgebung nichtmehr überschneidet.
    Theoretisch wäre Minecraft sogar eine schöne Spielwiese für Distributed Computing. Wenn der Server z.B. Chunks generieren muss, könnte er eigentlich einfach nur die Daten zu einem beliebigen Client schicken, der generiert dann das Chunk und schickt das fertige Chunk zurück zum Server. Birgt nur das Risiko, dass der Client mist bauen könnte (Mods, Plugins, Cheats, Cracks) und der Server dann kaputte/falsch generierte Chunks kriegen würde.
    Optifine macht ja einige Teile davon schon, allerdings halt nur im Singleplayer. Vielleicht kommt sowas ja auch mal für Server.

    Ich glaube mit solchen Spielchen könnte man zumindest die CPU-Last auf den Server drastisch reduzieren.

  3. Mag ich Flash-Hosting mag diesen Beitrag
  4. #3
    Obsidianforscher Avatar von Jobsti
    Registriert seit
    29.10.2010
    Beiträge
    2.138
    Minecraft
    Jobsti
    Also Bukkit hat schon irgendwas auf andere kerne ausgelagert habe ich gelesen, bin mir aber netmehr sicher was genau, ich meinte hatte mit den Chunks zutun.
    Das sollte aber net so das problem sein, wir haben mal den pre 1.8 gestartet. 14 user online, 4 Davon Creaivemode und jeder in eine andere Richtung mit Vollgas geflogen,
    das gab dann 100% CPU last und die Kiste laggte schön

    Das kommt bei normalem Spielen aber nicht vor. Wer nen Creative Server hat, der beschränkt die Welt einfach auf nen Radius und
    lässt die Chunks darin schon alle vorher erstellen, Problem gelöst
    Auch hilfreich: Wenn alle Chunks im Radius generiert worden sind, die Dynmap ebenfalls schon die ganze Karte generieren lassen,
    somit werden nurnoch die Bilder der veränderten Chunks neu generiert.

    Im Bukkit IRC habe ich was mitbekommen, dass einer von den Spezis grad dran ist, den Server umzubauen, ja sogar neuzuschreiben,
    meine was von C# gelesen zu haben.
    Wär natürlich de Knaller.

    PS: Dynmap erstellen, 2D Maps erstellen, Backups zippen usw. teilt sich allerdings auf die Kerne fein auf.

  5. #4
    Architekt Avatar von frankweslar
    Registriert seit
    09.04.2011
    Beiträge
    1.381
    Minecraft
    frankweslar
    Probier mal das sun-java Paket, soll besser laufen als dass OpenJDK

  6. #5
    Obsidianforscher
    Registriert seit
    29.04.2011
    Beiträge
    3.187
    Zitat Zitat von Jobsti Beitrag anzeigen
    PS: Dynmap erstellen, 2D Maps erstellen, Backups zippen usw. teilt sich allerdings auf die Kerne fein auf.
    Das ist klar, das sind eigenständige Prozesse, die ansich nichts mit dem Server zu tun haben. Da sorgt das Betriebssystem schon dafür, dass andere Kerne genutzt werden.

    Chunks vorgenerieren lassen, passt nicht zu unserer Spielweise. Wir wollen die Welt ja erst erkunden, nutzen aber trotzdem Maps wie Dynmap oder Tectonicus. Wären die Chunks vorher schon generiert, würde man ja auf der Karte auch gleich alles sehen.

    Bei eurem leistungsstarken Server mag das sein, dass die Chunkgenerierung die Performance nur minimal runterzieht, aber auf unserem Nitradoserver lagt der ganze Server, sobald sich nur ein einziger Spieler an die Kartengrenzen bewegt.

    Etwas unabhängig vom Server direkt: Wer Singleplayer spielt, erzielt mehr Performance, wenn er lokal einen Server startet und darauf spielt. Der Server kann dann auf einem anderen Kern laufen als der Client. Das hat z.B. den Effekt, dass im Gegensatz zu richtigem Singleplayer der Server Chunks generiert und auch die Weltsimulation auf dem anderen Kern läuft und so den Client nicht ausbremst.

  7. #6
    Obsidianforscher Avatar von Jobsti
    Registriert seit
    29.10.2010
    Beiträge
    2.138
    Minecraft
    Jobsti
    @frankweslar
    hab das offizielle von oracle, kein open und kein icedtea. (oder meintest du das?)

    @Buuuh
    Richtig.
    Und man hat den Vorteil gewisse Plugins zu nutzen und ma nen Freund drauf zu lotsen
    Achso, vorgenerieren lassen kannst du die Chunks ja, die user merken das ja nicht, nur sollte man dann
    die Dynmap kein Fullrender machen lassen

    Edit: (21.10.2011 um 09:33)

    Update erster Post: "Zusatztipps für schwache CPUs:"

  8. #7
    Permanent Gesperrt
    Registriert seit
    03.10.2011
    Beiträge
    264
    Minecraft
    Mooxmirror
    Für wie viele Slots würde dieses System reichen:
    AMD Phenom II X6 1090T @ 6 x 3,2 GHz
    16 GB RAM
    Ubuntu Server 11.10 x64 (Als VM unter Windows?)

    Und für wie viele Slots dieses:
    Intel Pentium 4 @ 2 x 3 GHz*
    3 GB RAM
    Ubuntu Server 11.10 x86
    Geändert von Mooxmirror (01.11.2011 um 01:35 Uhr) Grund: Und mit Ubuntu Server?

  9. #8
    Obsidianforscher Avatar von Jobsti
    Registriert seit
    29.10.2010
    Beiträge
    2.138
    Minecraft
    Jobsti
    Das kann dir wohl keiner so ganz genau sagen.....
    Vor allem net mit Windows drauf... Welches Upload-Speed hasten du an den Kisten, das wäre erst mal es Wichtigste.

    Den 1090T habe ich hier übrigens auch im Bürorechner, für MC leistet der X4 BE aber mehr, da bei gleichem Preis höherer Takt, zudem direkt als BE erhältlich, dabei günstiger, und Problemlos @ 3,8 lauffähig.

    Mit Win 7 habe ich noch keine ausführlichen Tests gemacht, sollte aber dem 08 RC2 sehr ähnlich sein, XP kannste übrigens direkt knicken!

    Haue Linux X64 auf die Phenom-Kiste drauf und beschränke den Server nur auf Core 1, somit funzt TurboCore wenigstens richtig gut!
    Damit sollten dann von der Power her circa 40-50 Spieler möglich sein! Mit Windows als OS (als reiner Server) vielleicht 20-35 Spieler)

    Genau kann man das aber net sagen, ich jedenfalls net...
    Den P4 kannste knicken, so ne Kiste steht auch hier, die ist mit MC (Client) schon direkt locker auf 100%, würde mal Tippen 3-6 Spieler, mit Linux vielleicht 7-10 User.
    Je nach Konfiguration, Anzahl, Konfiguration und Art der Plugins. etc.

    (Mein letzter XP x86 Test ist schon ne Weile her, aber da war die Kiste schon mit 2 Spielern ohne jegliche Plugins auf 100%, hat gelaggt ohne Ende, ich meine das war nen P4 mit 3,2 gHz.... dafür noch ne ganze alte MC Version, performance hat sich ja doch sehr verbessert mittlerweile)

  10. #9
    Landwirt Avatar von diamond-crafter.de
    Registriert seit
    05.08.2011
    Beiträge
    51
    Minecraft
    PanzerHase
    Hinweis für die RAM Entlastung:

    Solltet ihr Spout nutzen und Probleme mit dem Ram haben (zu voll bei bukkit, mit /memory überprüfen es sollten immer so. 600-500MB Frei sein) geht in die Spout Config und stellt das ein:
    ChunkDataCache: false
    Sonst läd er alle Chunks in den Ram und sie bleiben auch da. Wenn die Map Groß ist dann ist der schnell voll. Benutzt am besten noch Performance Tweaks oder NoLagg damit der die unbenutzten Chunks nicht mehr im Ram hat. So z.B.:

    Ptweaks.v1.6:

    #enable: If this part of the plugin should be enabled at all.
    #lifetime: The minimum lifetime of chunks in milliseconds.
    #prune: The number of milliseconds before each prune cycle. Lifetime should not be less then this.
    #Thu Oct 20 21:036 CEST 2011
    lifetime=150000
    prune=5000
    enable=true

    So läd er die Chunks wo nur mal einer drüber rennt nach ein paar Minuten wieder raus. Und er kann wieder andere Sachen berechnen. ds lohnt sich grad bei "Wenig" Ram. Bis 8192MB würde ich das machen, hängt aber auch von den Spielern ab.

  11. #10
    Obsidianforscher Avatar von Jobsti
    Registriert seit
    29.10.2010
    Beiträge
    2.138
    Minecraft
    Jobsti
    ChunkDataCache ist NUR für Spoutcraft Clients!
    Ist es auf True wird der Chunk beim Client gecached, somit auch weniger Traffic verursacht (Gut für Server und Client). Dies sollte den Server soweit eigentlich nicht betreffen.

    Ptweaks ist dennoch natürlich sinnvoll.
    Allerdings werden die Chunks hier gerade länger geladen um die CPU-Last einzugrenzen,
    Chunks die somit oft betreten werden müssen somit net ständig neu generiert und gerendert werden, was natürlich gerade beim Spawn sinnvoll ist.

+ Antworten