How to Optimize Hytale Server Performance

Server performance directly impacts player experience. Lag, stuttering, and crashes frustrate players and drive them away. This comprehensive guide covers everything you need to optimize your Hytale server—from JVM tuning and view distance configuration to automated performance management with the Nitrado Performance Saver plugin.
What you'll learn: Understanding performance bottlenecks, optimal JVM flags, view distance optimization, TPS management, RAM pressure handling, the Performance Saver plugin, monitoring tools, and troubleshooting performance issues.
Understanding Performance Bottlenecks
TPS (Ticks Per Second)
Hytale servers aim for 20 TPS. Each tick processes game logic—entity movement, block updates, etc. When TPS drops below 20, the game appears laggy and unresponsive.
Key insight: Stable 18 TPS is better than fluctuating 15-20 TPS. Consistency matters more than peak performance.
View Distance
The #1 performance factor. View distance determines how many chunks are loaded and sent to players. Higher view distance = exponentially more RAM and CPU usage.
8 chunks (256 blocks): ~2GB RAM, light CPU
12 chunks (384 blocks): ~4-6GB RAM, moderate CPU (recommended max)
16 chunks (512 blocks): ~8-12GB RAM, heavy CPU
24 chunks (768 blocks): ~20GB+ RAM, very heavy CPU
RAM Pressure
When RAM fills up, Java's garbage collector (GC) runs more frequently, causing stuttering. If GC can't free enough memory, the server crashes with OutOfMemoryError.
Main RAM consumers: Loaded chunks, entities (mobs/NPCs), player inventories, world generation, and mods.
CPU Usage
CPU handles game logic: entity AI, block updates, physics, world generation, and chunk loading. When players explore independently, CPU load spikes dramatically.
CPU-intensive scenarios: Players exploring separately, mob farms, redstone-equivalent contraptions, world generation during exploration.
JVM Optimization Flags
Recommended JVM Flags
These flags optimize garbage collection and memory management for Hytale servers:
# For servers with 4-8GB RAM:java -Xms4G -Xmx8G \ -XX:+UseG1GC \ -XX:+ParallelRefProcEnabled \ -XX:MaxGCPauseMillis=200 \ -XX:+UnlockExperimentalVMOptions \ -XX:+DisableExplicitGC \ -XX:G1NewSizePercent=30 \ -XX:G1MaxNewSizePercent=40 \ -XX:G1HeapRegionSize=8M \ -XX:G1ReservePercent=20 \ -XX:G1HeapWastePercent=5 \ -XX:G1MixedGCCountTarget=4 \ -XX:InitiatingHeapOccupancyPercent=15 \ -XX:G1MixedGCLiveThresholdPercent=90 \ -XX:G1RSetUpdatingPauseTimePercent=5 \ -XX:SurvivorRatio=32 \ -XX:+PerfDisableSharedMem \ -XX:MaxTenuringThreshold=1 \ -XX:AOTCache=HytaleServer.aot \ -jar HytaleServer.jar --assets Assets.zipFlag Explanations
-Xms4G -Xmx8G
Minimum and maximum heap size. Set both to same value for production (e.g., -Xms8G -Xmx8G) to prevent resize pauses.
-XX:+UseG1GC
Use G1 garbage collector—best for large heaps and game servers.
-XX:MaxGCPauseMillis=200
Target max GC pause time. Lower = more frequent but shorter pauses.
-XX:AOTCache=HytaleServer.aot
Use ahead-of-time compilation cache for faster server startup (Java 25 feature).
-XX:+DisableExplicitGC
Prevents mods from forcing garbage collection (unless Performance Saver plugin needs it).
Memory Allocation Guidelines
| Player Count | View Distance | Recommended RAM |
|---|---|---|
| 1-5 players | 8-10 chunks | 4GB |
| 5-10 players | 10-12 chunks | 6-8GB |
| 10-20 players | 12 chunks | 8-12GB |
| 20-50 players | 10-12 chunks | 12-16GB |
| 50+ players | 8-10 chunks | 16GB+ |
View Distance Optimization
Recommended Settings
Based on extensive testing, these view distances balance performance with gameplay:
Maximum: 12 chunks (384 blocks)
Sweet spot for most servers. Provides good visibility while keeping RAM usage reasonable. This is roughly equivalent to 24 Minecraft chunks.
Budget servers: 8-10 chunks
For servers with 4GB RAM or limited CPU. Still playable but reduced visibility.
High-performance: 14-16 chunks
Only on dedicated hardware with 12GB+ RAM. Provides excellent visibility but heavy resource usage.
Critical: Why View Distance Matters
View distance increases resource usage exponentially, not linearly:
- ▸8 chunks → 12 chunks = ~2x RAM usage
- ▸12 chunks → 16 chunks = ~2x RAM usage again
- ▸When players explore separately, multiply by player count
Nitrado Performance Saver Plugin
What It Does
The Performance Saver plugin automatically optimizes your server's resource usage in real-time. Instead of running hardware that can handle worst-case scenarios 24/7, this plugin intelligently manages resources during high-load situations while maintaining playability.
TPS Limiting
Limits server TPS to stable values. Empty servers run at 5 TPS to save resources.
Dynamic View Radius
Automatically reduces view distance during CPU/RAM pressure, then gradually recovers.
Smart GC Triggering
Triggers garbage collection when chunks unload, freeing memory proactively.
Installation
- 1.
Download the plugin from GitHub:
https://github.com/nitrado/hytale-plugin-performance-saver - 2.
Place the JAR file in your server's
mods/folder - 3.
Restart your server—the plugin will create default configuration
- 4.
(Optional) Customize
mods/Nitrado_PerformanceSaver/config.json
Complete Configuration
Create or edit mods/Nitrado_PerformanceSaver/config.json:
// Default configuration with all options{ "Tps": { "Enabled": true, "TpsLimit": 20, "TpsLimitEmpty": 5, "OnlyWorlds": [], "InitialDelaySeconds": 30, "CheckIntervalSeconds": 5, "EmptyLimitDelaySeconds": 300 }, "ViewRadius": { "Enabled": true, "MinViewRadius": 2, "DecreaseFactor": 0.75, "IncreaseValue": 1, "InitialDelaySeconds": 30, "CheckIntervalSeconds": 5, "RecoveryWaitTimeSeconds": 60, "RequireNotifyPermission": false, "GcMonitor": { "Enabled": true, "HeapThresholdRatio": 0.85, "TriggerSequenceLength": 3, "WindowSeconds": 60 }, "TpsMonitor": { "Enabled": true, "TpsWaterMarkHigh": 0.75, "TpsWaterMarkLow": 0.6, "OnlyWorlds": [], "AdjustmentDelaySeconds": 20 } }, "ChunkGarbageCollection": { "Enabled": true, "MinChunkCount": 128, "ChunkDropRatioThreshold": 0.8, "GarbageCollectionDelaySeconds": 300, "InitialDelaySeconds": 5, "CheckIntervalSeconds": 5 }}Key Configuration Options
TPS Settings
TpsLimit: 20
Maximum TPS when players are online. Keep at 20 for normal gameplay.
TpsLimitEmpty: 5
TPS when server is empty—saves CPU and electricity.
View Radius Settings
MinViewRadius: 2
Minimum view distance during severe pressure. Increase to 4-6 for better minimum experience.
DecreaseFactor: 0.75
Multiplier when reducing view distance (current × 0.75). Lower = more aggressive reduction.
RecoveryWaitTimeSeconds: 60
How long to wait before increasing view distance after pressure subsides.
GC Monitor Settings
HeapThresholdRatio: 0.85
Triggers view distance reduction when heap reaches 85% usage.
TriggerSequenceLength: 3
Number of consecutive high-heap GC events before taking action—prevents false positives.
TPS Monitor Settings
TpsWaterMarkLow: 0.6
Reduce view distance when TPS falls below 60% of target (12 TPS if target is 20).
TpsWaterMarkHigh: 0.75
Allow view distance increases when TPS is above 75% of target (15 TPS if target is 20).
Additional Performance Tips
Use SSD Storage
Hytale servers constantly read/write chunks. SSDs provide 10-50x faster disk I/O than HDDs, dramatically improving chunk loading performance.
Recommended: NVMe SSD for best performance, SATA SSD minimum. Avoid HDDs entirely.
Pregenerate World Chunks
World generation is CPU-intensive. Pregenerate chunks in a radius around spawn to reduce load during gameplay:
# Use a world pregeneration plugin or command/worldborder set 5000/worldborder fillLimit Entity Counts
Too many mobs/NPCs tank performance. Configure entity limits:
- ▸Reduce mob spawn rates in server config
- ▸Clear unused entities periodically
- ▸Limit mob farms and breeding areas
Regular Server Restarts
Schedule automatic daily restarts to clear memory leaks and reset entity counts:
# Using cron on Linux (restart at 4 AM daily):0 4 * * * /usr/bin/systemctl restart hytale-serverMonitor Performance
Install monitoring plugins to track server health:
- ▸ApexHosting:PrometheusExporter - Detailed metrics for Grafana
- ▸Nitrado:Query - Real-time server status via HTTP
- ▸Check logs regularly for performance warnings
Optimize Mods
Some mods are resource-intensive:
- ▸Test mods individually to identify performance hogs
- ▸Keep mods updated—newer versions often have optimizations
- ▸Remove unused mods to reduce overhead
See our mod installation guide for best practices.
Monitoring & Troubleshooting
Check Current TPS
Monitor your server's TPS in-game or via console:
/tpsHealthy servers maintain 18-20 TPS. Consistent drops below 15 indicate serious performance issues.
Identify Performance Bottlenecks
Low TPS + Low CPU usage
→ Single-threaded bottleneck. Upgrade to faster CPU (higher clock speed).
Low TPS + High CPU usage
→ Too much load. Reduce view distance, limit entities, or upgrade hardware.
Frequent GC pauses (check logs)
→ RAM pressure. Reduce view distance, add more RAM, or enable Performance Saver plugin.
Stuttering during chunk loading
→ Disk I/O bottleneck. Upgrade to SSD, pregenerate chunks, or reduce view distance.
Reading Server Logs
Server logs show performance warnings:
# Common performance warnings:[WARN] Can't keep up! Is the server overloaded?[WARN] GC pause time exceeded 200ms[ERROR] OutOfMemoryError: Java heap spaceCheck logs/latest.log regularly for these warnings.
Common Performance Issues & Solutions
Server crashes with OutOfMemoryError
Solution:
- • Increase -Xmx value (add more RAM)
- • Reduce view distance
- • Install Performance Saver plugin
- • Check for memory leaks in mods
TPS drops when players explore
Solution:
- • Enable Performance Saver plugin (automatic adjustment)
- • Pregenerate world chunks around spawn
- • Reduce max view distance to 10-12 chunks
- • Upgrade CPU or use VPS with better single-thread performance
Stuttering and lag spikes
Solution:
- • Tune GC settings (see JVM flags section)
- • Reduce entity counts
- • Schedule restarts to clear memory
- • Check disk I/O—upgrade to SSD if using HDD
Performance Testing Scenarios
Test Your Optimizations
After applying optimizations, test these scenarios:
Test 1: Idle Performance
Let the server run empty for 30 minutes. TPS should be stable at TpsLimitEmpty (default 5). Check RAM usage—should remain stable.
Test 2: Grouped Players
Have all players stay together in one area. TPS should maintain 18-20. This represents the best-case scenario.
Test 3: Exploration Stress Test
Have players explore in different directions simultaneously. Monitor TPS and watch Performance Saver adjust view distance automatically. Server should remain stable even if view distance drops temporarily.
Test 4: Combat & Entity Stress
Spawn large groups of mobs and engage in combat. Monitor TPS and entity count. Should remain playable even with 50+ entities.
Your Server is Optimized!
You've learned how to optimize your Hytale server for maximum performance. With proper JVM flags, view distance configuration, and the Performance Saver plugin, your server can handle player exploration and resource pressure automatically. Monitor performance regularly and adjust settings based on your specific player count and hardware.