Fix lag på din Minecraft server: sådan får du 20 TPS
Mål med spark, sænk simulation-distance, få styr på mobs, hoppers og redstone - og find ud af hvorfor mere RAM sjældent er svaret.
To tal du skal kende: TPS og MSPT
- TPS (ticks per second) er hvor mange gange i sekundet serveren opdaterer verdenen. 20 er maksimum - serveren kan aldrig køre hurtigere, kun komme bagud.
- MSPT (millisekunder per tick) er hvor lang tid ét tick tog. Serverens budget er 50 ms. Bliver et tick længere end det, falder TPS.
MSPT er det bedste måletal. En server på 45 ms og en på 5 ms viser begge 20.00 TPS - men den første er én mobfarm fra at bryde sammen. TPS fortæller dig at det er gået galt; MSPT fortæller dig hvor tæt på du er.
Trin 1 - Mål, før du ændrer noget
Gæt aldrig. Kør målingerne først:
| Kommando | Hvad du får |
|---|---|
/tps |
TPS i gennemsnit over 1, 5 og 15 minutter |
/mspt |
Gennemsnit, minimum og maksimum MSPT |
/paper mobcaps |
Hvor tæt verdenen er på mob-grænsen |
/paper chunkinfo |
Antal indlæste chunks |
spark er det egentlige værktøj, og det er indbygget i Paper fra 1.21:
/spark tps
/spark health
/spark profiler start --timeout 600
Profileren kører 10 minutter og giver dig et link til en rapport, der viser præcis hvilket plugin eller hvilken opgave der bruger tiden. Har du kun spidser en gang imellem, så brug --only-ticks-over 50 og fang kun de langsomme ticks.
Timings er udgået og deaktiveret som standard i nyere Paper-versioner. Brug spark.
Trin 2 - Sænk simulation-distance (den største enkeltgevinst)
I server.properties er der to indstillinger, folk konstant blander sammen:
| Indstilling | Standard | Anbefalet | Hvad den styrer |
|---|---|---|---|
view-distance |
10 |
7 |
Hvor langt spillerne kan se. Koster båndbredde |
simulation-distance |
10 |
4 |
Hvor langt serveren tænker: mobs, redstone, afgrøder. Koster CPU |
Det er
simulation-distanceder koster TPS. At sætte den ned til 4 mærker spillerne næsten ikke - de kan stadig se langt, verdenen længere væk står bare stille. Det er meningen at simulation-distance er lavere end view-distance.
Trin 3 - Få styr på mobs og entities
bukkit.yml i serverens rodmappe:
| Nøgle | Standard | Anbefalet |
|---|---|---|
spawn-limits.monsters |
70 |
20 |
spawn-limits.animals |
10 |
5 |
spawn-limits.ambient |
15 |
1 |
ticks-per.monster-spawns |
1 |
10 |
ticks-per.water-spawns |
1 |
400 |
To ting misforstås her: grænserne ganges med antallet af spillere, så 70 monstre med 40 spillere er et enormt tal. Og
ticks-perer intervallet mellem spawn-forsøg - højere tal betyder mindre arbejde.
spigot.yml i rodmappen:
| Nøgle | Standard | Anbefalet |
|---|---|---|
entity-activation-range.animals |
32 |
16 |
entity-activation-range.monsters |
32 |
24 |
entity-activation-range.misc |
16 |
8 |
entity-activation-range.flying-monsters |
32 |
48 |
mob-spawn-range |
8 |
3 |
nerf-spawner-mobs |
false |
true |
tick-inactive-villagers |
true |
false |
entity-activation-range bestemmer, hvor langt væk fra en spiller en mob stadig får AI og pathfinding. Det er den mest effektive knap efter afstandsindstillingerne. Sæt dog flying-monsters op, ellers fryser phantoms og ghasts midt i luften.
Hold mob-spawn-range på eller under din simulation-distance.
Trin 4 - Items, hoppers og redstone
I spigot.yml:
merge-radius:
item: 3.5
exp: 4.0
ticks-per:
hopper-check: 8
I config/paper-world-defaults.yml:
| Nøgle | Anbefalet | Effekt |
|---|---|---|
entities.spawning.alt-item-despawn-rate.enabled |
true |
Skrald som cobblestone forsvinder hurtigere |
entities.armor-stands.tick |
false |
Armor stands holder op med at koste tid |
entities.behavior.update-pathfinding-on-block-update |
false |
Stor gevinst på servere med mange mobs |
hopper.disable-move-event |
true |
Kraftig gevinst - kun hvis intet plugin lytter på InventoryMoveItemEvent |
collisions.max-entity-collisions |
2 |
Mindre arbejde når mobs står oven i hinanden |
misc.redstone-implementation |
ALTERNATE_CURRENT |
Markant hurtigere redstone |
chunks.prevent-moving-into-unloaded-chunks |
true |
Stopper elytra-spillere i at overhale chunk-genereringen |
Trin 5 - RAM og Java
- Sæt
-Xmsog-Xmxtil det samme tal. En heap der vokser, giver GC-arbejde og dermed lagspidser. - Brug ikke al din RAM. Java skal bruge hukommelse uden for heapen. Har du 8 GB, så giv serveren cirka 6,5-7 GB.
- Brug Aikar's flags - den anbefalede JVM-opsætning fra PaperMC. Du finder den aktuelle streng på docs.papermc.io/paper/aikars-flags.
Java-version efter serverversion:
| Minecraft-version | Java |
|---|---|
| 1.17 - 1.19 | Java 17 |
| 1.20 - 1.21.11 | Java 21 |
| 26.1 og nyere | Java 25 |
Mere RAM fikser ikke lav TPS. TPS er et CPU-problem. RAM hjælper kun, hvis
/spark healtheller/spark gcviser reelt pres på hukommelsen.
Trin 6 - Pregenerér verdenen
Chunk-generering er den dyreste ting, en Minecraft-server laver. Ligger din verden ikke genereret på forhånd, betaler du den regning hver gang en spiller flyver et nyt sted hen.
Installér pluginnet Chunky og kør:
/chunky world world
/chunky center 0 0
/chunky radius 5000
/chunky start
Kør det, mens serveren er tom - genereringen tager selv al ydelsen imens. Sæt bagefter en world border, så spillerne ikke bare flyver udenfor igen.
Det hjælper ikke
- Mere RAM alene. Køb kun mere, hvis målingerne viser hukommelsespres.
/reload. Java kan ikke sikkert genindlæse kode. Kommandoen efterlader gamle lyttere og opgaver kørende ved siden af de nye. Genstart i stedet.- Flere CPU-kerner. Serverens tick-løkke er stort set enkelttrådet - høj clockfrekvens betyder mere end mange kerner.
- At kopiere en færdig "optimeret config". Flere af de populære indstillinger ændrer gameplay. Ret det, målingen peger på.
Fejlfinding
| Symptom | Sandsynlig årsag | Næste skridt |
|---|---|---|
| TPS falder når mange er online | For høj simulation-distance | Sæt den til 4 og mål igen |
| TPS falder på faste tidspunkter | Autosave eller en plugin-opgave | /spark profiler start og se hvad der kører |
| Lagspidser, men fint gennemsnit | Enkelte lange ticks | /spark profiler start --only-ticks-over 50 |
| Serveren lagger når nogen flyver | Chunk-generering | Pregenerér med Chunky |
| TPS falder over tid efter genstart | Ophobning af entities eller items | /paper mobcaps, tjek farme |
| Konstant lav TPS uanset spillere | Et plugin bruger main-tråden | spark-rapport, fjern plugins ét ad gangen |
Kan du ikke tolke din spark-rapport? Send os linket i en ticket - vi kigger på den sammen med dig.