Jump to content
Rump3l

Can't keep up! und nur 40% cpu Auslastung?

Recommended Posts

Hallo,

ich habe vor einigen Wochen einen ATM 3 R3mix Server auf der Spielversion 1.12.2 erstellt auf einem eigenen Root ( i7 4790K, 32 GB Ram ) Server läuft auf Linux.

Und nun habe ich das Problem das der Server sobald ein Spieler Connectet ( dabei ist egal welcher ) TPS technisch anfängt Probleme zu werfen, trotz geringer CPU Auslastung.

Wenn kein Spieler drauf ist:

[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: Overall: 20.00 TPS/20.46MS (100%)
[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: overworld [0]: 20.00 TPS/20.04MS (100%)
[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: the_nether [-1]: 20.00 TPS/0.08MS (100%)
[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: MINING_WORLD [-6]: 20.00 TPS/0.13MS (100%)
[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: ExtraUtils2_Quarry_Dim [-9999]: 20.00 TPS/0.05MS (100%)
[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: Spectre [-343800852]: 20.00 TPS/0.04MS (100%)
[16:53:27] [Server thread/INFO] [minecraft/DedicatedServer]: Storage Cell [2]: 20.00 TPS/0.04MS (100%)

mit einem Spieler:

 

[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: Overall: 15.58 TPS/64.20MS (77%)
[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: overworld [0]: 20.00 TPS/23.52MS (100%)
[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: the_nether [-1]: 20.00 TPS/8.39MS (100%)
[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: MINING_WORLD [-6]: 20.00 TPS/5.77MS (100%)
[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: ExtraUtils2_Quarry_Dim [-9999]: 20.00 TPS/8.46MS (100%)
[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: Spectre [-343800852]: 20.00 TPS/8.66MS (100%)
[16:55:06] [Server thread/INFO] [minecraft/DedicatedServer]: Storage Cell [2]: 20.00 TPS/8.40MS (100%)
[16:55:11] [Server thread/WARN] [minecraft/MinecraftServer]: Can't keep up! Did the system time change, or is the server overloaded? Running 9579ms behind, skipping 191 tick(s)

Ich bin für jede HIlfe dankbar.

Aktuell spielen Maximal 4 Leute auf dem Server, view distance ist runtergesetzt auf 5 - geladen sind so ca. 100 Chunks, allerdings sind die ja auch geladen wenn kein Spieler auf dem Server ist.

Cpu usage:


%Cpu0  : 38.2 us,  1.3 sy,  0.0 ni, 17.3 id, 42.9 wa,  0.0 hi,  0.3 si,  0.0 st
%Cpu1  :  1.2 us,  0.6 sy,  0.0 ni, 90.5 id,  0.0 wa,  0.0 hi,  7.7 si,  0.0 st
%Cpu2  :  0.3 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
%Cpu3  :  4.0 us,  0.3 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  0.7 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  0.3 sy,  0.0 ni, 98.0 id,  1.7 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st


Bin gern bereit so gut wie alles zu tun um irgendwas zu verändern / verbessern.

Share this post


Link to post
Share on other sites

Funktioniert der /timings-Befehl? Falls ja, hänge da mal die Infos dazu mit an

Was nutzt du für Plugins - die könnten auch infrage kommen

Share this post


Link to post
Share on other sites

Also bei /timings oder timings an sich spuckt der server nur unknown command aus - Und Plugins an sich garkeine - es ist eben die Normale Version von ATM3 R3mix. Auf nem Linux Root Server.  Java -version spuckt folgendes aus:

openjdk version "1.8.0_222"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)

falls es hilft.

Share this post


Link to post
Share on other sites

[20:46:30] [EntityProfiler/INFO] [TickProfiler]:
TPS: 15.021816
                          Single Entity | Time/Tick |     %
        passive.EntityCow -334,70,113:0 |     0.318 | 1.725
          passive.EntityBat -397,5,91:0 |     0.124 | 0.672
TileEntityTurbineCasing {-442,19,132}:0 |     0.123 | 0.666
TileEntityTurbineCasing {-435,32,122}:0 |     0.066 | 0.358
TileEntityTurbineCasing {-442,33,130}:0 |     0.064 | 0.349
     Chunk | Time/Tick |      %
0: -26, -2 |     2.131 | 11.531
0: -26, -3 |     2.047 | 11.078
 0: -21, 7 |     1.405 |  7.605
 0: -28, 8 |     0.791 |  4.278
 0: -19, 2 |     0.776 |  4.197
 All Entities of Type | Time/Tick |      %
passive.EntityChicken |     3.295 | 17.828
  passive.EntitySheep |     2.296 | 12.425
    passive.EntityCow |     1.186 |  6.419
      item.EntityItem |     1.139 |  6.165
    passive.EntityPig |     0.881 |  4.769
Average Entity of Type | Time/tick | Calls
     TileEntityGrinder |     0.054 |   413
      EntityArmorStand |     0.049 |  1812
      MobRelocatorTile |     0.047 |   453
 TileTurbineController |     0.036 |   453
 monster.EntitySnowman |     0.035 |   453

 

Das hier ist die ausgabe, also sind hühner schuld? xD

Share this post


Link to post
Share on other sites

Zusätzlich ist grade noch folgende ausgabe aufgetaucht:

SEVERE: LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak reporting to find out where the leak occurred. To enable advanced leak reporting, specify the JVM option '-Dio.netty.leakDetection.level=advanced' or call ResourceLeakDetector.setLevel() See http://netty.io/wiki/reference-counted-objects.html for more information.


nach eingabe von '-Dio.netty.leakDetection.level=paranoid' in den JVM Argumenten bleibt es leider gleich und wird nicht weiter aufgeschlüsselt, wo muss ich den Befehl also hinpacken?

Share this post


Link to post
Share on other sites

Falls das hilft, /profile a

Gibt unteranderem das aus:

 

Last tick 0.20690338s ago."Server thread" RUNNABLE (in native)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:270)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
        at net.minecraft.world.storage.MapStorage.func_75747_a(SourceFile:94)
        at codechicken.chunkloader.manager.PlayerLoginTracker$SavedData.forceSave(PlayerLoginTracker.java:104)
        at codechicken.chunkloader.manager.ChunkLoaderManager.updateLoginTimes(ChunkLoaderManager.java:682)
        at codechicken.chunkloader.manager.ChunkLoaderManager.onTickEnd(ChunkLoaderManager.java:666)
        at codechicken.chunkloader.handler.ChunkLoaderEventHandler.worldTick(ChunkLoaderEventHandler.java:32)
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_2856_ChunkLoaderEventHandler_worldTick_WorldTickEvent.invoke(.dynamic)
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
        at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
        at net.minecraftforge.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:274)
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:776)
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397)
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
        at java.lang.Thread.run(Thread.java:748)


[20:59:36] [LagSpikeProfiler/INFO] [TickProfiler]:
The server appears to have lag spiked.
Last tick 0.22389464s ago."Server thread" RUNNABLE (in native)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:270)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
        at net.minecraft.world.storage.MapStorage.func_75747_a(SourceFile:94)
        at codechicken.chunkloader.manager.PlayerLoginTracker$SavedData.forceSave(PlayerLoginTracker.java:104)
        at codechicken.chunkloader.manager.ChunkLoaderManager.updateLoginTimes(ChunkLoaderManager.java:682)
        at codechicken.chunkloader.manager.ChunkLoaderManager.onTickEnd(ChunkLoaderManager.java:666)
        at codechicken.chunkloader.handler.ChunkLoaderEventHandler.worldTick(ChunkLoaderEventHandler.java:32)
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_2856_ChunkLoaderEventHandler_worldTick_WorldTickEvent.invoke(.dynamic)
        at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
        at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
        at net.minecraftforge.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:274)
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:776)
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397)
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
        at java.lang.Thread.run(Thread.java:748)

 

Share this post


Link to post
Share on other sites
vor 2 Minuten schrieb Rump3l:

codechicken.chunkloader

Das klingt nach was - die Chunks werden durch diese Modifikation geladen - mehr Spieler, mehr Chunks, die geladen werden müssen. Teste den Server mal ohne ChickenChunks

 

Share this post


Link to post
Share on other sites

ALso bis jetzt sieht es sehr sehr gut aus, 1x Can't keep up in ca. 10 Minuten. nachdem ich den Mod gelöscht habe - ich möchte mich schonmal ganz recht herzlich bedanken, wäre aber toll wenn mir noch irgendwer bei dem problem mit dem

SEVERE: LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak reporting to find out where the leak occurred. To enable advanced leak reporting, specify the JVM option '-Dio.netty.leakDetection.level=advanced' or call ResourceLeakDetector.setLevel() See http://netty.io/wiki/reference-counted-objects.html for more information.


nach eingabe von '-Dio.netty.leakDetection.level=paranoid' in den JVM Argumenten bleibt es leider gleich und wird nicht weiter aufgeschlüsselt, wo muss ich den Befehl also hinpacken?

 

helfen könnte, ich befürchte das das evtl. auch ein kleines bisschen an der Performance kratzt.

Share this post


Link to post
Share on other sites

Grüß dich @Rump3l :)

Da ich diesen Beitrag erst jetzt entdeckt habe, ich aber der Meinung bin, Lösungsansätze könnten auch Leuten helfen die "genau" oder ein "ähnliches" Problem damit haben. Daher auch mein Beitrag zu diesem etwas älterem Thema.

Erklärung:

Zum ersten ist es so, das 80% der Modpack-Entwickler rein für Singleplayer-Spieler arbeiten. D.h Ihre komplette Modpack-Entwicklung ist entweder nicht oder kaum für Server optimiert... das sieht man zum Teil auch an der Fülle von Mods

die zum einen im Spiel kaum bis gar keine Verwendung aufweisen... schlechte Kombination aus verschiedenen Mods haben, die sich wiederum gegenseitig aushebeln und /oder aber einen haufen performance fressen. Ganz ehrlich... wenn es doch

schon eine Maschine gibt die eine bestimmte Aufgabe erledigt... warum brauche ich diese in 3 Verschiedenen Ausführungen, wo sich diese doch "kaum" Unterscheiden? warum benötige ich in einem Pack 5000 Verschiedene Monster... wobei das eine

noch Verständlich ist, da es Abwechslung bietet... aber warum kann man das nicht pro Chunk und Spieler begrenzen? damit nicht pro Spieler 100 Mobs in einem Chunk umherwandern? .... das sind nur kleine Beispiele die nix mit ATM Remix zu tun haben

aber dennoch zu Lagspikes, unrundes Spielerlebnis und unötige Performanceeinbußen endet. Dabei hat es nicht zwingend etwas mit der Modanzahl zu tun, denn auch ein Pack mit 400 Mods kann performanter laufen wie eins mit 200, wenn man weiß

wie.

Lösung:

Es wurde bereits von @Bedrock vieles gutes Vorgeschlagen, da gibt es nix auszusetzen, denn es war richtig was er gesagt hat. Ich möchte das ganze erweitern. Es gibt einige Serverseitige Tools, die meiner Meinung nach auf jeden Server gehören, denn die

wenigsten packs sind wirklich für Server optimiert und wenn dann steht es meist in der Pack-Beschreibung, wenn die Entwickler darauf "Wert" gelegt haben.  Ich werde nun kurz ein paar ServerMods vorstellen, damit Ihr wisst was die so tun.

(Links sind hinzugefügt) Ich werde versuchen mich kurz zu halten, kann es aber nicht versprechen. Denn zu diesem Thema könnte man ein Buch schreiben, so viel kann man darüber schreiben. Aber ich versuche wenigstens das grobe wichtigste

aufzuführen.

 

Entity Purger

Ein Mod der für das Hauptproblem von Lags sorgt... Zuviel "Entities" was soviel bedeutet wie zuviele "Geschöpfe" dazu wird alles gezählt, vom Hasen bis zum Zombie u.s.w. auf einem Fleck.

Dieser Mod "muss" bevor er im Einsatz kommt konfiguriert werden, denn sonst macht er entweder was falsch oder gar nix. Sollte man diesen aber Feineingestellt haben, kann der die TPS

konstant auf einem hohen Wert halten. Dennoch bekommt man das nur hin, wenn auch Mitspieler "achtsamer" spielen und nicht wie im Singleplayer ;)

Man kann generell sehr viel einstellen, eine detailiertere Beschreibung findet Ihr auf Curseforge.

 

Lag Googles

Eines der wichtigsten Tools meiner Meinung nach. Diese sollten bei Gamemastern und Serverownern auch auf dem Clienten liegen. Denn dadurch ist es Möglich eine "Lagquelle" direkt zu ermitteln, via Worldscan.

Dadurch ist es Möglich sich direkt zur Lagquelle hinzuteleportieren und zu schauen wer oder was es grade verursacht. Dieser Mod wird von anderen, bis auf die Leute die entsprechende Rechte besitzen benötigt.

Alle anderen können auch ohne diesen Mod auf dem Server joinen.

 

World Edit

Anders als viele Leute denken, nutze ich es weniger für das bauen, auch wenn man das könnte. Sondern eher für spezielle Aufgaben wie z.b ein Claim-Umzug... Spieler die nicht mehr mitspielen, dort kann man das

komplette Gebiet entclaimen und "regenerieren" d.h im Urzustand versetzen und das ganz einfach. Danach kann man anderen, aktiveren Spielern den freien Bauplatz vergeben. Es gibt natürlich auch viel mehr

Aufgaben die man einfacher mit Worldedit lösen kann. Natürlich gibt es von Forge aus auch ähnliche Funktionen, auch diese kenne ich, allerdings sind diese für meine Zwecke eher ungenau. Und da ich World Edit

ohnehin favorisiere, ist es für mich sinnvoller. Allerdings müssen sowohl der Client als auch der Server diesen Mod besitzen. Aber es ist ja nicht so schwer einen Mod zusätzlich zu installieren ;) zumindest nicht

in Zeiten von Curseforge und Twitchapp , oder manuell.

 

Configurable Despawn Timer

despawnTimeInTicks (default = 12000, min 0, max 72000): The delay in ticks when an item should despawn, called the lifespan. Minecraft's default time is 6000 ticks. 1 second is 20 ticks.

das bedeutet Ihr könnt die "Items auf den Boden" Lebensdauer verringern. Das beschert euch auch nochmal einiges an Performance, weil auch das ein typisches Problem für Modpacks ist, es

sei denn, der Modpackersteller hat darauf geachtet. Am besten zu sehen, ist es wenn er in seiner Beschreibung stehen hat, das es Server-Optimiert ist, denn dann sind meistens solche Programme

inkludiert.

 

Auto Message Displayer

Ein Klasse Mod für Serverowner. Da dieser viele Nachrichten die in konfigurierbaren Abständen gepostet werden verschickt. Besonders hilfreich für wichtige Informationen oder aber Regeln, damit

Mitspieler auch daran errinnert werden auf was Wert gelegt wird ;) kann allerdings für vieles mehr genutzt werden.

 

Mod Authenticator

Eigentlich selbsterklärend. Aber hier handelt es sich um ein Anti-Cheat-Tool. Hier könnt Ihr bestimmen, welche Zusatzmods Ihr auf eurem Server erlaubt und welche nicht, damit ein faires Spielen

möglich ist.

 

Chunk Pregenerator

Auch ein sehr gutes Tool für Serverowner und Staff ;) ... wie der Name schon vermuten lässt, pregeneriert dieser Chunks. D.h wie wenn Spieler bereits dort gewesen sind. Ergo bevor man eine Welt

startet sollte man ein wenig vorgenerieren, damit es nicht gleich die TPS runterzieht, falls nun 5 Spieler oder mehr in 5 verschiedenen Richtungen erkunden. Das zieht immer sehr viel Performance.

Aber dieses Tool kann noch viel mehr. Es lassen sich Erze regenerieren, Items und Mobs killen und viel viel mehr.

 

Deny Blocks

Einer der wichtigsten Mods überhaupt für jeden Server. Ihr kennt die Situation als Serverowner... Es gibt in vielen (nicht in allen) Modpacks Items, die entweder nicht genutzt werden sollen, weil

sie zu Problemen oder gar zu Abstürzen führen und/oder weil der Serverowner neuen Mitspielern nicht vertraut und er nicht möchte, dass Items genutzt werden die potenziell Probleme verursachen und/oder sogar Lags verursachen.

Da bietet sich dieser Mod hervoragend an, bestimmte Items serverseitig zu bannen und nur für bestimmte Personen zugänglich zu machen und/oder komplett rauszunehmen. Es gibt sehr viele Items und Beispiele die ich nun nennen

könnte, aber das würde den Rahmen sprengen.

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...
B