Kann mir jemand bei einem java java.lang.OutOfMemoryError helfen?
Hallo,
ich hoste auf einem vServer bei Strato mehrere Minecraft Server. Aber wenn ich eine gewisse Serverzahl überschreite, kommt der
Error: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
Infos:
Betriebssystem: Debian
Java: 17
RAM: 32GB (Am RAM liegt es nicht, denn wenn wir den Server starten, haben wir wehr als genug freien RAM)
Speicher: 800GB (Ist auch nur halb voll)
Java start command: java -Xms2G -Xmx2G -jar server.jar
Ich hoffe um Hilfe.
Mit freundlichen Grüßen
Robin
6 Antworten
vServer bei Strato sind Containeremuliert mit Virtuozzo. Außerdem limitiert Strato extrem die IO/s. Könnte mit vorstellen, dass der Fehler daher kommt, dass die Hostmaschine voll läuft. Ansonsten wie bereits gesagt wurde mal mehr RAM zuweisen. Wie sieht denn die RAM-Auslastung vom Strato-Server aus wenn das passiert? Ansonsten: KVM vServer oder Minecraft Host dürfe Abhilfe schaffen
Und der Fehler tritt trozdem auf?
Das Problem kommt warhscheinlich daher, dass die Java VM sich für jeden Server die 2GB reserviert und diese nicht für weitere Server verwendbar sind. Die sind zwar erstmal nicht benutzt für dein Linux aber können aber auch nicht nochmal verwendet werden.
Wenn du 32GB RAM hast (und wir mal den Fakt das dein System auch noch1-2 GB brauchst ignorieren) kannst du ca 16 Server starten danach geht nix mehr
Deine 32 GB RAM nutzen dir nichts, wenn du der Java-VM hier nur 2 GB zuweist. Kannst du erhöhen und schauen, ob das bereits hilft.
ja logisch, bei 2G pro server dann nach spätestens 16 Servern.
Limitiert dein Hoster die Prozesse, die du starten darfst? Es muss kein Speichermangel sein, was diese Fehlermeldung verursacht.
Java start command: java -Xms2G -Xmx2G -jar server.jar
Du hast zwar 32 gb vom server zur verfügung nutzt aber nur 2GB
versuch mal
Java start command: java -Xms16G -Xmx24G -jar server.jar
Auch wenn ich das erhöhe kommt der Error. Egal wie groß oder klein ich die Zahl mach ab einer gewissen Anzahl von Servern kommt der Error.
Ich hatte den Servern nur so wenig Ram gegeben weil es sollen ca 8 Server gleichzeitig laufen.
2 GB is zu wenig für einen Server. 4 Ist ein empfohlenes minimum für minecraft alleine. Ich gehe davon aus das er mit 3 GB Minecraft session laufen sollte hinzu kommt natürlich die power was ein vserver braucht und der Host zieht natürlich auch. Fazit für 8 vserver wo minecraft läuft auf einem Host sind 32 Gb zu wenig.
Sagt dir aber auch der Error code
- für 8 Server upgrade deinen Ram. 64GB reichen Bei nitrado ist das kein aufwand. Nur kosten
- Copy Paste meinen Befehl. Ich passe dir den grad noch an für 1 deiner 8 vserver das trägst du halt einfach bei allen ein
-Xms4G -Xmn8G -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseNUMA -XX:+CMSParallelRemarkEnabled -XX:MaxTenuringThreshold=15 -XX:MaxGCPauseMillis=30 -XX:GCPauseIntervalMillis=150 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:+UseBiasedLocking -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:ReservedCodeCacheSize=2048m -XX:+UseCodeCacheFlushing -XX:SoftRefLRUPolicyMSPerMB=2000 -XX:ParallelGCThreads=10
Ist das richtig das es -Xmn8G heißt muss es nicht -Xmx8G heißen?
Ich dachte der Start command heißt -Xms -Xmx
Kannst es ja ausprobieren ;) Im schlimmsten fall stürtzt er ab.
Der Server hat ein Problem mit "UseConcMarkSweepGC"
Der Server hat ein Problem mit:
UseConcMarkSweepGC
UseParNewGC
CMSParallelRemarkEnabled
UseAdaptiveGCBoundary
UseFastAccessorMethods
AggressiveOpts
Discord, Unwr3cked#3781 da helf ich dir. Über den chat ist mir das zu nervig.
-Xms16G -Xmn24G -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseNUMA -XX:+CMSParallelRemarkEnabled -XX:MaxTenuringThreshold=15 -XX:MaxGCPauseMillis=30 -XX:GCPauseIntervalMillis=150 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:+UseBiasedLocking -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:ReservedCodeCacheSize=2048m -XX:+UseCodeCacheFlushing -XX:SoftRefLRUPolicyMSPerMB=2000 -XX:ParallelGCThreads=10
Das wär einiges zu erklären, des hab ich mir mal vor einigen Jahren geschrieben und funktioniert bis heute.
Auch wenn ich das erhöhe kommt der Error. Egal wie groß oder klein ich die Zahl mach ab einer gewissen Anzahl von Servern kommt der Error.