"Il server laggia" può voler dire tre cose molto diverse: TPS bassi (il server non riesce a stare al passo con il gioco), ping alto (il percorso di rete è lento) oppure FPS bassi sul client (il computer del giocatore). Questa guida si concentra sul primo caso, l'unico che puoi davvero risolvere lato server.
1. Misura prima di cambiare qualcosa
Installa spark, il profiler di riferimento per i server Minecraft, e avvialo durante un momento di lag:
/spark tps
/spark profiler start --timeout 120
Il report ti dice esattamente quale plugin, entità o chunk sta consumando il tempo del tick. Tutti gli altri passaggi qui sotto restano ipotesi finché non hai questi dati.
2. Usa Paper o Purpur, non vanilla
Vanilla va bene per cinque amici. Per qualcosa di più grande, Paper (o il suo fork Purpur) riscrive i percorsi di codice più pesanti, corregge bug storici ed espone decine di parametri di performance. Passare a Paper significa solo sostituire il jar del server.
3. Abbassa la simulation distance
view-distance controlla cosa vedono i giocatori, simulation-distance cosa viene aggiornato dal server. Tenere basso il secondo valore è il miglioramento più grande sui server affollati.
# server.properties
view-distance=10
simulation-distance=6
4. Dai a Java i flag giusti
Più RAM non è sempre meglio: un heap enorme allunga le pause del garbage collector. Parti da 6-10 GB per un server moddato e usa i noti flag di Aikar con G1GC:
java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC -XX:G1NewSizePercent=30 \
-jar paper.jar --nogui
Imposta -Xms e -Xmx allo stesso valore, così l'heap non si ridimensiona a partita in corso.
5. Pre-genera il mondo
Generare nuovi chunk è l'operazione più costosa che un server fa. Pre-genera un'area con un plugin come Chunky prima di aprire il server, poi blocca il world border a quella dimensione.
6. Tieni a bada entità e redstone
Farm con centinaia di mob e clock che scattano a ogni tick sono i sospettati abituali in un report di spark. I limiti di entità di Paper e i tetti per chunk ti permettono di tenere le farm senza che mettano in ginocchio il server.
7. Scegli hardware adatto al gioco
Il thread principale di Minecraft è single-thread. Una CPU con frequenza alta batte una con tanti core lenti, e i core dedicati battono quelli condivisi perché il ciclo del tick odia essere interrotto. Per questo i nostri server di gioco girano su CPU ad alta frequenza con storage NVMe e protezione DDoS in-house calibrata sul traffico di gioco.
Un server a 20 TPS su un piano modesto batte un server a 12 TPS su un piano enorme. Prima ottimizza, poi scala.
Checklist rapida
- spark installato e profilo raccolto durante il lag
- Paper o Purpur al posto di vanilla
- simulation distance a 6 o meno
- heap fisso con i flag G1GC
- mondo pre-generato e con border
Se hai fatto tutto questo e il server fatica ancora, mandaci il link di spark in un ticket. Il nostro team li legge ogni giorno e ti dirà cosa cambiare.
