Server-Performance Diskussion Teil 2

Dieses Thema im Forum "Technischer Support" wurde erstellt von Jobsti, 11. Mai 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Jobsti
    Offline

    Jobsti

    Registriert seit:
    18. August 2011
    Beiträge:
    1.226
    Ort:
    Steinau (Hessen)
    Minecraft:
    Jobsti
    Grüßt euch,

    nun zum Teil 2, wird ja mal Zeit für ein neues Thema zu 1.2.5,
    gerade, da hier viel Neues kam.
    Fortsetzung vor Alten Thema: http://minecraft.de/showthread.php?62310-Server-Performance-Diskussion
    (Hier ging's allgemein um den Server, die Last, den Traffic usw. Somit hier bitte zu erst rein schauen!)


    Unser Haupt-Problem sind derweil die Mob-Spawns, allerdings erst seit der neuen KI.
    Folgendes ist Masse:

    Server:
    4x3,4 gHz, 16gb Ram, Hardawre Raid 1.
    Ubuntu 11 Server X64 VM mit vollen Ressourcen und 10gb Ram zugeteilt.
    CraftBukkit Beta #2175, getartet mit 8gb Ram und paar Java Flags, vor allem für die GC.
    (anm.: gut was gebracht hat damals, kein Xginc Xmn und Xms, sondern nur Xmx zu nutzen)


    Unsere Hauptwelt hat nen Radius von knapp 3200, also doch schon relativ groß.

    Autofarmen haben wir mit Nolagg in den Griff bekommen.
    Items werden im Radius 1,5 ab 4 Items alle 20 Ticks gestackt.
    Der ItemBuffer wurde auf 160 (default 80) angehoben, da die 8x8x8 Autofarm sonst nur 2 Stacks anstatt 8 ausspuckt

    Mobs haben wir ohne Limiter um die 4000-5000 auf der Welt gehabt (ab 10 Spieler), was natürlich viel zu viel ist,
    aber erst seit der neuen KI so viel Power frisst, zwischen 4-5k fängt's ganz leicht zu laggen an, CPU last steigt, Ram juckts net.
    Davon knapp 1000 Monster, 3000 Tiere. uiuiui ;)

    Nolagg hat hier schon etwas geholfen, da es die Chunks recht flott wieder entlädt, somit auch Tiere und Mobs,
    das allein reicht aber net.
    EntitySuppressor musste drauf. Hier kann man die Monster, Tiere und Squids pro Welt limitieren,
    aber auch pro Chunk (was bei uns massig Performance gefressen hat).
    Limit jeweils auf 1024, Squids auf 128. Ergibt circa 800 Monster und 1600 Tiere, jap 600 Tiere zu viel,
    was wahrscheinlich schon Vorhandene sind oder halt gefarmte.
    Problem wenn das Limit erreicht ist: User weinen rum, da Breeding netmehr möglich ist.

    Neue Bukkit Beta Builds bringen hier neue Features: spawn-limits
    Standar sah das bei uns so aus: Tiere passt jetzt samt EntitySuppressor 1024er Limit und NoLagg Chunks entladen ganz ok,
    wobei es immer noch etwas zu viel oft ist, aber hier mal weitere Updates abwarten.

    Monster tauchen auf der Welt leider kaum bis garnet auf.... nanu, was los?
    Die spawn-limits sind default auf 70 Monster per Chunk in dem der Spieler ist (bei 2 Spielern wird's nicht mehr).
    Somit muss wieder EntitySuppressor ran.
    Spawn Flags frisst leider zu viel CPU, also aus damit, Rettung: Monster-Distance removal!

    Jetzt werden die Monster ab 192 Blocks Entfernung vom Spieler entfernt, ergo wieder Monster, massig Monster, sehr geil,
    zudem wird der Monster-Spawn ab 128 Blocks geblockt (Wobei ich jetzt net weiß, ob das dank UseSpawnFlags: false funktioniert)
    Nachteil: Der Mist frisst wieder CPU, je nachdem wie viele Spieler, Chunks, Monster on sind.
    Funktioniert so aber derweil ganz ok bei uns, ScanInterval wurde auf 200 angehoben und entlastete nochmal etwas die CPU.


    Was derweil noch doof ist: Bukkit gibt aus, wann wie wo Mobs spawnen, allerdings nicht das De-Spawning,
    somit müssen die Limiter immer die Welt, bzw. alle geladenen Chunks nach Mobs Checken, dann entfernen/limitieren,
    das kostet natürlich Power.
    Somit nochmal ne Weile warten was hier noch kommt, laut Bukkit.org News, ist das gesamte Team derweil nur mit Performance beschäftigt,
    da diese wohl in letzter Zeit wenig Beachtung fand.


    Heute Morgen gab's die erste Beschwerde "Meine XP Farm rennt im SP 10x besser".
    Somit habe ich in der bukkit.yml den Monster Spawn auf 100 angehoben, nun hat man so 110-120 Monster um sich drumrum.
    Animal-Spawn habe ich mal von 15 auf 10 gesenkt, mal schauen wie sich's auswirkt.

    Die Ticks habe ich normal gelassen, bzw. Tiere von 800 wieder auf Standard von 400 gesetzt.


    Mal schauen wie's rennt, ich gebe später nochmal Rückmeldung.


    Alles zusammenfassend:
    Seit den Beta Builds wurd's definitiv besser, geht dennoch nicht ohne ES.
    Spawn-Ticks normal. Animal-limit 10, Monster-Limit 100, Squid 5.
    ES maximal je 1024 Monster und Tiere, Spawn Flags aus, Monster Distance Removal auf 192, Monster Spawn-Cancel 128, Chunk Limits aus.
    NoLagg Limiter aus, da der nix taugt. Item Stacking auf r: 1,5, 4 Items. 20 Ticks, ItemBuffer auf 160 items.



    Was sind eure Erfahrungen, wie handhabt ihr das?
    Mir ist jedenfalls aufgefallen, dass solche Probleme erst bei recht großen Welten entstehen (r:2000 und mehr), bei kleinen ist's recht Wurscht.
     
    #1
  2. Zahl
    Offline

    Zahl

    Registriert seit:
    10. Juli 2011
    Beiträge:
    214
    Tiere und Monster sind mir auch schon länger ein Anliegen, ich hab aber seit einiger Zeit kaum noch Zeit, mich mit vielen Experimenten und Getune zu beschäftigen, leider. Wir haben ein noch sehr altes und rudimentäres System laufen (ca. 8 Monate alt).
    Das System ist passiv und überwacht die Tickrate des Servers über 1 Minuten Intervalle. Sollte in zwei aufeinanderfolgenden Intervallen die Tickrate unter 95% fallen, killt das Plugin alle Monster und ca. 50% aller Tiere. Dabei wird ermittelt wie viele Tiere es von welcher Art gibt und das Plugin versucht dann, dass hinterher die Bestände einigermaßen ausgeglichen sind. Steht also irgendwo ne riesen Schaffarm, werden viele Schafe gekillt, und z.B. keine Kühe. Danach wird mit über die Zeit abnehmender Wahrscheinlichkeit jeder natürliche CreatureSpawn unterbunden. Fängt bei 80% Wahrscheinlichkeit an und ist nach 15 Minuten wieder auf 0% runter.
    Das funktioniert zwar an sich ganz gut, hat aber den Nachteil, dass eben gnadenlos alles weggekillt wird, also im schlimmsten Fall auch Wölfe und Schafe von Spielern. Die Stammspieler wissen darum, aber für Neulinge ist das doch immer etwas überraschend.

    Jednefalls danke für den ausführlichen Erfahrungsbericht, werde darauf auf jeden Fall zurückgreifen, wenn ich mich mal wieder ranmache. :)
     
    #2
  3. Jobsti
    Offline

    Jobsti

    Registriert seit:
    18. August 2011
    Beiträge:
    1.226
    Ort:
    Steinau (Hessen)
    Minecraft:
    Jobsti
    *Bump*
     
    #3
  4. Samses_I
    Online

    Samses_I

    Sinn?
     
    #4
  5. Smuil
    Online

    Smuil

    Threadpushing. Jobsti möchte wissen, ob es noch mehr bessere Perfomanceverbessernde Programme gibt, die wenig Auswirkungen auf das Spielen der User hat
     
    #5
  6. jemall
    Offline

    jemall

    Registriert seit:
    19. Januar 2012
    Beiträge:
    263
    Ort:
    Kaiserstuhl
    Minecraft:
    CaDo257
    Danke Jobsti!


    Aber ich finde es schade, dass man mir das nicht alles hier: Moblimit?
    schon gesagt wurde... :(


    Mfg
     
    #6
  7. Jobsti
    Offline

    Jobsti

    Registriert seit:
    18. August 2011
    Beiträge:
    1.226
    Ort:
    Steinau (Hessen)
    Minecraft:
    Jobsti
    Heute mal gecheckt.... Falsebook-IC frisst leider durchgängig Power.
    Beide Graphen auf 21ms zum guten Vergleich skaliert. (67 Plugins)

    (gelbe Graphen anschauen, gemessen jeweils über 2000 Ticks)
    Man siehe "Plugin-Count", erstens wird hier net alles gezählt, zudem wird Falsebook IC wohl als 8 Stück gerechnet!
    [​IMG]

    Wird Zeit dass Craftbook fertig wird.
    Gibt zwar nen neuen Release, aber es fehlen leider noch si einige Permissions und ICs.
     
    #7
  8. Serial1990
    Offline

    Serial1990

    Registriert seit:
    19. August 2011
    Beiträge:
    267
    Dann melde ich mich mal zu Wort.

    Bei einen Server mit 100+ Spielern ist dringenst CB-- zu empfehlen.

    Wir haben gestern nach ein Gespräch mit Alonian die Sichtweite auf 3 verringert und der Server läuft bei 150 Spielern mit diversen Plugins absolut flüssig! 20 TPS

    Der absolute Leistungsfresser ist Worldguard bei einen Server mit 120 Spielern + stellt hier einfach folgendes in der config ein:

    use-player-move-event: false

    Ansonsten für den Fall das ihr Portale nutzt, setzt eine Globale Ablinkzeit ein sodaß sich Spieler nicht jede Sekunde Porten.

    Das gleiche gilt auch für Teleport Commands wie /tp /warp /call /spawn /home usw.

    Was Plugins angeht die Logs schreiben, deaktivieren somit Spart ihr auch ein wenig an Leistung vorallem NoCheat schreibt enorm viel in den Logs, dies haben wir einfach deaktiviert da so oder so alles unterbunden wird.

    Für LWC ist dringenst geraten auf einer MySQL DB zu schreiben, dass gleiche gilt natürlich auch für ALLE anderen Plugins die auf einer DB gehen.

    Was Falsebook angeht habe ich auch bemerkt das es eine Menge Ticks braucht, ich werde mir sobald Craftbook wieder draussen ist dies anschauen, hatte es damals zu 1.8 benutzt wo es dann aber Inaktiv wurde.

    Edit: Desweiteren setzte ich ein Developer darauf an das er mir ein Plugin schreibt das Mobs "mit ausnahme Schaafe" beim verlassen eines Chunks automatisch wie /stoplag tötet. Diese Idee stammt auch von Alonian
     
    #8
  9. Jobsti
    Offline

    Jobsti

    Registriert seit:
    18. August 2011
    Beiträge:
    1.226
    Ort:
    Steinau (Hessen)
    Minecraft:
    Jobsti
    Jap, das habe ich auch schonmal in einer Diskussion erwähnt, auch paar Tipps für große Server

    Worldguard:
    Scheduler, Move-Event (um so mehr Regionen, um so mehr Power) und High-Frequency-Flags deaktivieren, pro Welt.

    CraftBukkit:
    Sichtweite Verringern!
    spawn-limits samt Ticks anpassen!

    NoLagg:
    Verschiedene Funktionen nutzen, schnelleres Chunk-Entladen usw.

    Mobs begrenzen:
    Per NoLagg (net so effektiv), oder Entity Supressor, laggts, dann Ticks hoch stellen und spawn-Flags deaktivieren,
    am besten auch globales Limit, keine per Chunk.
    Distance Removal lohnt auf alle Fälle, genau wie distance spawn-deny!
    In anderen Welten kann man sie auch ganz deaktivieren (Multiverse)

    Cooldowns und Warmups:
    Definitiv beides für jegliche Warps nutzen, Spawn, Home, Portale, Warps, TP usw....
    Wobei Spawn net so tragisch ist, wenn er ständig per MV geladen bleibt,
    dennoch benötigts etwas Power, vor allem aber Traffic.
    Auch könnte es sinnig sein, dass Spieler beim Tod nicht in ihrem Home landen, sondern am Spawn,
    da der Spawn geladen bleibt, die Homes aber nicht, falls die Spieler weiter weg sind.

    Chunks geladen halten:
    Nur die Spawns in den meist genutzten Welten, oft reicht einfach auch nur der der Hauptwelt (Multiverse)

    Explosionen:
    Erlaubt ihr TNT, dann schränkt es zB. mit Nolagg ein. Creeper Explosionen bei mehreren 100 Spielern sind
    auch absolut nicht empfehlenswert, somit block-damage sperren.

    Datenbanken:
    Alles was geht auf mySQL Datenbanken auslagern
    Wenn was viel schreibt aber net auf Datenbank auslagern geht, legt ne kleine RamDisk an und Mountet sie auf den entsprechenden ordner.

    Protections wie LWC:
    Kann man auch auf mySQL nutzen, aber sie sollten pro Rang und pro Gegenstand limitiert werden, damit
    net jeder Spieler massiv viel protectet, zudem auto-protect definitiv deaktivieren

    Hätte ich auch gerne, das Doofe ist nur, dass Gefarmte Tiere ebenfalls verschwinden dabei,
    hier braucht afaik noch paar Hooks in Bukkit. DIe Hook für Spawning existiert, die für De-Spawning nicht, deswegen arbeiten die Spawnlimiter alle auch net so super pralle.

    PS: im Anderen Thema gepostet, aber sollte hier viel besser passen.
    Infos zu Chunks bzw. View-Distance
    Dazu auch gleich mal ne Performance-Info: Is zwar es SP-Forum, aber hier passts grad ;)
    In der Server.props kann die Sichtweite eingestellt werden, ist diese auf 10 eingestellt heißt das, pro Spieler werden 21x21 Chunks geladen, also gesamt 441 Chunks,
    somit muss der Server pro Spieler 441 dauerhaft 441 Chunks checken und berechnen
    (Ki von Monster & Tiere, deren Spawning, Wachstum, Wasser, lava.....Pflanzenwachstum frisst hier die meiste Power).

    Der Server Checkt jeden Chunk 1x pro Tick! (20 Ticks = 1s)
    Worst Case: 20 Spieler, alle sehr weit auseinander, somit wären bei Sichtweite 10 ganze 8820 Chunks geladen,
    pro Sekunde checkt der Server dann also 176.400 Chunks!

    Ein aktueller, potenter CPU wird so um die 30000 Chunks schaffen pro Tick (pro Core, aber MC nutzt effektiv ja nur einen dafür),
    somit könnt ihr (Wenn ihr keine VM mit FLEX CPU habt, sondern volle Ressourcen!) um die 65 Spieler bei Sichtweite 10 halten,
    hier wäre die CPU aber schon auf 100% (auf dem genutzten Core).
    Hier kommen aber noch Plugins hinzu, Backups usw, usw. Somit sagen wir mal 30-50 Spieler, je nach Konfiguration.

    Stell ihr die Sichtweit auf 7 runter, sind's nurnoch 225 Chunks pro Spieler! (vergl.: Es werden nurnoch 90.000 anstatt 176.400 Chunks/t gechecked)
    Dazu mal Nolagg anguggen, die neue Version hat ne tolle Funktion: Dynamische Sichtweite pro gesamt-geladene-Chunks.


    Edit:
    Kleine Liste
    view-distance=1: 9 chunks
    view-distance=2: 25 chunks
    view-distance=3: 49 chunks
    view-distance=4: 81 chunks
    view-distance=5: 121 chunks
    view-distance=6: 169 chunks
    view-distance=7: 225 chunks
    view-distance=8: 289 chunks
    view-distance=9: 361 chunks
    view-distance=10: 441 chunks
    view-distance=11: 529 chunks
    view-distance=12: 625 chunks
    view-distance=13: 729 chunks
    view-distance=14: 841 chunks
    view-distance=15: 961 chunks

    @Serial1990
    War LWC bei euch tragisch? Limitiert ihr die Protections, Autoprotect an?
    Wir nutzen's noch per SQLite, und bei knapp 100 eingetragenen Spielern, hat die File netma 700kb,
    mySQL also absolut noch net lohnenswert.

    Der LWC.Playerlistener frisst eigentlich den Großteil.
     
    #9
  10. Serial1990
    Offline

    Serial1990

    Registriert seit:
    19. August 2011
    Beiträge:
    267
    Zu 1.8 Beta war LWC einer der Hauptgründe weshalb der Server instabil wurde.

    Achja für ChestShop nutzer -> stellt den Zugriff auf ein Schild auf 1sec.

    SHOP_INTERACTION_INTERVAL: 1000
    #(In 1/1000th of a second) How often can a player use a shop sign?
     
    #10
  11. Jobsti
    Offline

    Jobsti

    Registriert seit:
    18. August 2011
    Beiträge:
    1.226
    Ort:
    Steinau (Hessen)
    Minecraft:
    Jobsti
    Jo ich meine da gab's mal irgend nen Bug um die Zeit rum, habe da was im Hinterkopf, kann das sein?!

    Achso, zu Anfang 1.2.5 (oder vor Kurzem) kam auchmal irgend nen Update, welches massive Performance-Verbesserungen für LWC brachte,
    davon was bemerkt?
     
    #11
Status des Themas:
Es sind keine weiteren Antworten möglich.