Recent Discussions

Self-hosted Modded MC Server - Chunk Generation very slow

Unanswered
Southern yellowjacket posted this in #questions
Messages60 messages
Views0 views
Southern yellowjacketOP
Hello! Looking for a little help in determining which mod/mods would impact server performance - specifically chunk generation.

Some info:

Host OS: Unraid
Server is run in a container using itzg/docker-minecraft-server image
MC Version: 1.16.5
Forge version: 1.16.5-36.2.34


My compose file:

services:
  mc:
    image: itzg/minecraft-server:java11
    restart: unless-stopped
    tty: true
    stdin_open: true
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      MAX_PLAYERS: 20
      TYPE: "AUTO_CURSEFORGE"
      VERSION: "1.16.5"
      MEMORY: 16G
      MOTD: "WELCOME TO PIXELMON"
      
      CF_MODPACK_ZIP: "/data/Pixelmon-BadBatch.zip"
      CF_API_KEY: "[REDACTED]"  # Use double quotes for proper escaping
      CF_SLUG: pixelmon-badbatch
      CF_OVERRIDES_EXCLUSIONS: |
        config/*
      USE_AIKAR_FLAGS: "TRUE"
      
    volumes:
      - /mnt/user/pixelmon-prod/pixelmon:/data

  restarter:
    image: docker:cli  # Fixed indentation
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    entrypoint: ["/bin/sh", "-c"]
    command:
      - |
        while true; do
          echo 'Sleeping for 8 hours...'
          sleep 28800;
          docker exec pixelmon_prod-mc-1 rcon-cli 'say The server will restart in approximately 10 minutes.';
          docker exec pixelmon_prod-mc-1 rcon-cli 'say Wrap up what you are doing. This cannot be stopped.';
          sleep 580;
          docker exec pixelmon_prod-mc-1 rcon-cli save-all;
          docker exec pixelmon_prod-mc-1 rcon-cli 'say Server has been successfully saved. Anything past this point is likely to be lost.'
          sleep 20
          docker exec pixelmon_prod-mc-1 rcon-cli 'say Server restarting in 5 seconds.';
          sleep 5;
          docker restart pixelmon_prod-mc-1;
        done
    restart: unless-stopped


Mod List:

Pixelmon-1.16.5-9.1.13-universal.jar
"Rechiseled Compat-1.0.5.jar"
ScalableCatsForce-2.13.10-build-11-with-library.jar
EnvyHunt-Forge-4.4.1-1.16.5.jar
Mekanism-1.16.5-10.1.2.457.jar
byg-1.3.6.jar
BetterPokeBroadcaster-Forge-1.2.0-1.16.5.jar
Quark-r2.4-322.jar
DungeonsArise-1.16.5-2.1.49-beta.jar
appliedenergistics2-8.4.7.jar
rechiseled-1.1.6-forge-mc1.16.jar
spark-1.9.1-forge.jar
AdditionalEnchantedMiner-1.16.5-16.1.15_938619e.jar
cloth-config-4.17.132-forge.jar
ForgePlaceholderAPI-Forge-2.0.4-1.16.5.jar
buildinggadgets-1.16.5-3.8.4-build.25+mc1.16.5.jar
jei-1.16.5-7.8.0.1013.jar
IronGenerators-1.6.0-final-1.16.x.jar
mcjtylib-1.16-5.1.8.jar
konkrete_forge_1.6.1_MC_1.16.2-1.16.5.jar
architectury-1.32.68.jar
additional_lights-1.16.4-2.1.3.jar
xnet-1.16-3.0.17.jar
supermartijn642corelib-1.1.18-forge-mc1.16.jar
ironfurnaces-1.16.5-2.7.7.jar
fusion-1.2.3-forge-mc1.16.jar
rftoolsbase-1.16-2.1.5.jar
backpacked-forge-1.16.5-2.1.13.jar
Waystones_1.16.5-7.6.4.jar
MekanismTools-1.16.5-10.1.2.457.jar
movingelevators-1.4.10-forge-mc1.16.jar
SuperTools-1.2_1.16.5.jar
ae2wtlib-0.3.3-1.16.5.jar
OreExcavation-1.8.157.jar
ironchest-1.16.5-11.2.21.jar
Chunky-1.2.123.jar
supermartijn642configlib-1.1.8-forge-mc1.16.jar
collective-1.16.5-5.49.jar
inzheFoPCore-v.1.2.0.jar
InvMove-1.16-0.8.2-Forge.jar
ferritecore-2.1.1-forge.jar
AutoRegLib-1.6-49.jar
supertools-1.16.5-4.5.jar
Disenchanting-forge-1.16.5-1.7.2.jar
PickUpNotifier-v1.2-1.16.3.jar
worldborder_1.16.5-2.4.jar
justzoom_forge_1.0.2-2_MC_1.16.5.jar

I have run some spark reports but to be honest, I don't understand a lot of it and it all points at just chunk generation.

I am using Chunky to pregenerate chunks as that has definitely been the most taxing on the server while users are playing. Server is exceptionally stable when doing anything but chunk generation. This is why I am on this crusade to resolve the server performance.
debug.log
Download
@Southern yellowjacket Hello! Looking for a little help in determining which mod/mods would impact server performance - specifically chunk generation. Some info: Host OS: Unraid Server is run in a container using itzg/docker-minecraft-server image MC Version: 1.16.5 Forge version: 1.16.5-36.2.34 My compose file: services: mc: image: itzg/minecraft-server:java11 restart: unless-stopped tty: true stdin_open: true ports: - "25565:25565" environment: EULA: "TRUE" MAX_PLAYERS: 20 TYPE: "AUTO_CURSEFORGE" VERSION: "1.16.5" MEMORY: 16G MOTD: "WELCOME TO PIXELMON" CF_MODPACK_ZIP: "/data/Pixelmon-BadBatch.zip" CF_API_KEY: "[REDACTED]" # Use double quotes for proper escaping CF_SLUG: pixelmon-badbatch CF_OVERRIDES_EXCLUSIONS: | config/* USE_AIKAR_FLAGS: "TRUE" volumes: - /mnt/user/pixelmon-prod/pixelmon:/data restarter: image: docker:cli # Fixed indentation volumes: - "/var/run/docker.sock:/var/run/docker.sock" entrypoint: ["/bin/sh", "-c"] command: - | while true; do echo 'Sleeping for 8 hours...' sleep 28800; docker exec pixelmon_prod-mc-1 rcon-cli 'say The server will restart in approximately 10 minutes.'; docker exec pixelmon_prod-mc-1 rcon-cli 'say Wrap up what you are doing. This cannot be stopped.'; sleep 580; docker exec pixelmon_prod-mc-1 rcon-cli save-all; docker exec pixelmon_prod-mc-1 rcon-cli 'say Server has been successfully saved. Anything past this point is likely to be lost.' sleep 20 docker exec pixelmon_prod-mc-1 rcon-cli 'say Server restarting in 5 seconds.'; sleep 5; docker restart pixelmon_prod-mc-1; done restart: unless-stopped Mod List: Pixelmon-1.16.5-9.1.13-universal.jar "Rechiseled Compat-1.0.5.jar" ScalableCatsForce-2.13.10-build-11-with-library.jar EnvyHunt-Forge-4.4.1-1.16.5.jar Mekanism-1.16.5-10.1.2.457.jar byg-1.3.6.jar BetterPokeBroadcaster-Forge-1.2.0-1.16.5.jar Quark-r2.4-322.jar DungeonsArise-1.16.5-2.1.49-beta.jar appliedenergistics2-8.4.7.jar rechiseled-1.1.6-forge-mc1.16.jar spark-1.9.1-forge.jar AdditionalEnchantedMiner-1.16.5-16.1.15_938619e.jar cloth-config-4.17.132-forge.jar ForgePlaceholderAPI-Forge-2.0.4-1.16.5.jar buildinggadgets-1.16.5-3.8.4-build.25+mc1.16.5.jar jei-1.16.5-7.8.0.1013.jar IronGenerators-1.6.0-final-1.16.x.jar mcjtylib-1.16-5.1.8.jar konkrete_forge_1.6.1_MC_1.16.2-1.16.5.jar architectury-1.32.68.jar additional_lights-1.16.4-2.1.3.jar xnet-1.16-3.0.17.jar supermartijn642corelib-1.1.18-forge-mc1.16.jar ironfurnaces-1.16.5-2.7.7.jar fusion-1.2.3-forge-mc1.16.jar rftoolsbase-1.16-2.1.5.jar backpacked-forge-1.16.5-2.1.13.jar Waystones_1.16.5-7.6.4.jar MekanismTools-1.16.5-10.1.2.457.jar movingelevators-1.4.10-forge-mc1.16.jar SuperTools-1.2_1.16.5.jar ae2wtlib-0.3.3-1.16.5.jar OreExcavation-1.8.157.jar ironchest-1.16.5-11.2.21.jar Chunky-1.2.123.jar supermartijn642configlib-1.1.8-forge-mc1.16.jar collective-1.16.5-5.49.jar inzheFoPCore-v.1.2.0.jar InvMove-1.16-0.8.2-Forge.jar ferritecore-2.1.1-forge.jar AutoRegLib-1.6-49.jar supertools-1.16.5-4.5.jar Disenchanting-forge-1.16.5-1.7.2.jar PickUpNotifier-v1.2-1.16.3.jar worldborder_1.16.5-2.4.jar justzoom_forge_1.0.2-2_MC_1.16.5.jar I have run some spark reports but to be honest, I don't understand a lot of it and it all points at just chunk generation. I am using Chunky to pregenerate chunks as that has definitely been the most taxing on the server while users are playing. Server is exceptionally stable when doing anything but chunk generation. This is why I am on this crusade to resolve the server performance.
Connecticut Warbler
pregen and worldborder on modded is usually the best strategy
what specs?
Southern yellowjacketOP
CPU : Ryzen 5 5800x
RAM: 32GB DDR4 3200Mhz
GPU is a fire pro but isn't being used at all
Sorry, was going to add more but hit character limit - running spark profiler right now @Connecticut Warbler
And thank you for the response :PeepoGlad:
@Connecticut Warbler pregen and worldborder on modded is usually the best strategy
Southern yellowjacketOP
Pregen is the goal, but looking at the logs you can see it is just slow for the most part. I am assuming when it's hitting >10 CPS for me, it's just seeing already-generated chunks
Here's the spark profiler:

https://spark.lucko.me/1PlzFaGDSI
Well immediately I see that you're using unoptimized JVM flags. That'll help somewhat. https://flags.sh
@Southern yellowjacket what are you hosting on? is this a homehost?
Southern yellowjacketOP
This is - Unraid OS with the server running in a docker container
that did not answer my question
are you hosting on a machine at home?
Southern yellowjacketOP
Yes I'm hosting this at home, on its own hardware
@PM_ME_YOUR_REPO What's your storage look like?
Southern yellowjacketOP
SSD is a Samsung 970 or something similar - 512gig

I have an array of 30tb HDDs but all of this should be living on the SSD
However this isn't how it originally set and I might have used Unraid wrong. Looking into this now to confirm that it's not using my array of HDDs
@Southern yellowjacket SSD is a Samsung 970 or something similar - 512gig

I have an array of 30tb HDDs but all of this should be living on the SSD
I don't have any experience with Unraid and I don't know EXACTLY what these stats are referring to, but it looks like there is some IO bottlenecking. That's why I asked.
image.png
IOWorker tells me it's disk read/write
CompletableFuture and ForkJoinPool sounds to me like maybe a SQL server connection pool is getting overwhelmed? That's the context I know of pools being used. Or maybe its just async IO. Not sure.
@PM_ME_YOUR_REPO I don't have any experience with Unraid and I don't know EXACTLY what these stats are referring to, but it looks like there is some IO bottlenecking. That's why I asked.
Southern yellowjacketOP
Hoo boy you are good - I moved the directory over successfully using Unraid Docs to the SSD and we are muchhhh better now
Southern yellowjacketOP
10 average now versus 1 at times. I t still does the big spike ups
@Southern yellowjacket 10 average now versus 1 at times. I t still does the big spike ups
Alright. New Spark report. Let's keep chipping away at it.
Southern yellowjacketOP
Spike ups to 40 cps, but again I theorize that's Chunky already-gen'd chunks
Loading...