Оптимизация производительности Minecraft сервера
Содержание
- 1 Оптимизация производительности Minecraft сервера
- 1.1 1. Подготовка системы
- 1.2 2. Оптимизация JVM параметров =
- 1.3 3. Оптимизация Paper конфигурации =
- 1.4 4. Оптимизация Spigot конфигурации =
- 1.5 5. Оптимизация системы =
- 1.6 6. Оптимизация диска =
- 1.7 7. Мониторинг производительности =
- 1.8 8. Оптимизация сети =
- 1.9 9. Оптимизация плагинов =
- 1.10 10. Устранение неполадок =
- 1.11 Заключение
Оптимизация производительности Minecraft сервера
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
- Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы.
2. Оптимизация JVM параметров =
Настройка памяти
1. Отредактируйте systemd сервис:
sudo nano /etc/systemd/system/minecraft-spigot.service
2. Оптимизируйте JVM параметры:
ExecStart=/usr/bin/java -Xms4G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -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 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar spigot-1.20.1.jar nogui
Настройка G1GC
1. Создайте оптимизированный скрипт запуска:
nano /opt/minecraft/spigot/start-optimized.sh
2. Добавьте содержимое:
#!/bin/bash
- Оптимизированные JVM параметры
JAVA_OPTS="-Xms4G -Xmx8G"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
JAVA_OPTS="$JAVA_OPTS -XX:+ParallelRefProcEnabled"
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"
JAVA_OPTS="$JAVA_OPTS -XX:+UnlockExperimentalVMOptions"
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
JAVA_OPTS="$JAVA_OPTS -XX:+AlwaysPreTouch"
JAVA_OPTS="$JAVA_OPTS -XX:G1NewSizePercent=30"
JAVA_OPTS="$JAVA_OPTS -XX:G1MaxNewSizePercent=40"
JAVA_OPTS="$JAVA_OPTS -XX:G1HeapRegionSize=8M"
JAVA_OPTS="$JAVA_OPTS -XX:G1ReservePercent=20"
JAVA_OPTS="$JAVA_OPTS -XX:G1HeapWastePercent=5"
JAVA_OPTS="$JAVA_OPTS -XX:G1MixedGCCountTarget=4"
JAVA_OPTS="$JAVA_OPTS -XX:InitiatingHeapOccupancyPercent=15"
JAVA_OPTS="$JAVA_OPTS -XX:G1MixedGCLiveThresholdPercent=90"
JAVA_OPTS="$JAVA_OPTS -XX:G1RSetUpdatingPauseTimePercent=5"
JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=32"
JAVA_OPTS="$JAVA_OPTS -XX:+PerfDisableSharedMem"
JAVA_OPTS="$JAVA_OPTS -XX:MaxTenuringThreshold=1"
JAVA_OPTS="$JAVA_OPTS -Dusing.aikars.flags=https://mcflags.emc.gs"
JAVA_OPTS="$JAVA_OPTS -Daikars.new.flags=true"
- Запуск сервера
java $JAVA_OPTS -jar spigot-1.20.1.jar nogui
3. Сделайте скрипт исполняемым:
chmod +x start-optimized.sh
3. Оптимизация Paper конфигурации =
Настройка paper-global.yml
1. Отредактируйте конфигурацию:
nano /opt/minecraft/paper/paper-global.yml
2. Оптимизируйте настройки:
# Paper Global Configuration
_version: 25
misc:
compression-level: -1
max-joins-per-tick: 5
region-file-cache-size: 256
use-alternative-luck-formula: false
lag-compensate-block-breaking: true
use-dimension-type-for-custom-spawners: false
strict-advancement-dimension-check: false
fix-climbing-bypassing-cramming-rule: false
- Оптимизация тиков
tick-rates:
grass-spread: 4
container-update: 1
mob-spawner: 1
- Оптимизация мобов
mob-spawner:
tick-rate: 1
spawn-counts:
monster: 70
creature: 15
ambient: 15
water_creature: 5
water_ambient: 20
misc: -1
Настройка paper-world-defaults.yml
1. Отредактируйте конфигурацию мира:
nano /opt/minecraft/paper/paper-world-defaults.yml
2. Оптимизируйте настройки:
# Paper World Defaults Configuration
- Оптимизация чанков
chunk-loading:
autoconfig-send-distance: true
enable-frustum-priority: false
global-max-chunk-load-rate: -1
global-max-concurrent-send: 2
max-concurrent-sends: 2
min-load-radius: 2
player-max-chunk-load-rate: 100
target-player-chunk-send-rate: 100
- Оптимизация мобов
entities:
spawning:
all-chunks-are-slime-chunks: false
count-all-mobs-for-spawning: false
creative-arrow-despawn-rate: -1
despawn-ranges:
ambient: -1
axolotls: -1
creature: -1
misc: -1
monster: -1
underground_water_creature: -1
water_ambient: -1
water_creature: -1
fix-clumping: true
per-player-mob-spawns: true
spawner-nerfed-mobs-should-jump: true
4. Оптимизация Spigot конфигурации =
Настройка spigot.yml
1. Отредактируйте конфигурацию:
nano /opt/minecraft/spigot/spigot.yml
2. Оптимизируйте настройки:
# Spigot Configuration
settings:
debug: false
bungeecord: false
restart-on-crash: true
restart-script: ./start.sh
netty-threads: 4
timeout-time: 60
restart-on-crash: true
restart-script: ./start.sh
user-cache-size: 1000
save-user-cache-on-stop-only: false
moved-wrongly-threshold: 0.0625
moved-too-quickly-multiplier: 10.0
moved-too-quickly-threshold: 0.3
log-villager-deaths: true
log-named-deaths: true
- Оптимизация тиков
world-settings:
default:
chunks-per-tick: 650
max-entity-collisions: 8
max-tick-time:
tile: 50
entity: 50
merge-radius:
item: 2.5
exp: 3.0
item-despawn-rate: 6000
arrow-despawn-rate: 1200
trident-despawn-rate: 1200
zombie-aggressive-towards-villager-when-lagging: true
nerf-spawner-mobs: false
enable-zombie-pigmen-portal-spawns: true
custom-map-seeds: false
seed-village: 10387312
seed-desert: 14357617
seed-igloo: 14357618
seed-jungle: 14357619
seed-swamp: 14357620
seed-monument: 10387313
seed-shipwreck: 165745295
seed-ocean: 14357621
seed-endcity: 10387313
seed-slime: 987234911
seed-bastion: 30084232
seed-fortress: 30084232
seed-mansion: 10387319
seed-fossil: 14357921
seed-buried-treasure: 10387320
seed-mineshaft: 10387321
seed-ruined-portal: 34222645
seed-geode: 14357622
5. Оптимизация системы =
Настройка ядра системы
1. Отредактируйте sysctl.conf:
sudo nano /etc/sysctl.conf
2. Добавьте оптимизации:
# Оптимизация для Minecraft сервера
- Увеличение буферов сети
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 65536 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
- Оптимизация TCP
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
- Оптимизация памяти
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
3. Примените изменения:
sudo sysctl -p
Настройка лимитов системы
1. Отредактируйте limits.conf:
sudo nano /etc/security/limits.conf
2. Добавьте лимиты:
# Лимиты для пользователя minecraft
minecraft soft nofile 65536
minecraft hard nofile 65536
minecraft soft nproc 32768
minecraft hard nproc 32768
6. Оптимизация диска =
Настройка SSD
1. Проверьте тип диска:
lsblk -d -o name,rota
2. Если SSD, настройте TRIM:
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
Настройка файловой системы
1. Проверьте файловую систему:
df -T
2. Если ext4, настройте оптимизации:
sudo tune2fs -o journal_data_writeback /dev/sda1
sudo tune2fs -O ^has_journal /dev/sda1
7. Мониторинг производительности =
Установка инструментов мониторинга
1. Установите необходимые пакеты:
sudo apt install -y htop iotop nethogs
2. Установите jstat для мониторинга JVM:
sudo apt install -y openjdk-21-jdk
Создание скрипта мониторинга
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/minecraft-performance-monitor.sh
2. Добавьте содержимое:
#!/bin/bash
- Мониторинг производительности Minecraft сервера
LOG_FILE="/var/log/minecraft-performance.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
- Проверка использования CPU
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'%' '{print $1}')
echo "[$DATE] CPU Usage: $CPU_USAGE%" >> $LOG_FILE
- Проверка использования памяти
MEMORY_USAGE=$(free | grep Mem | awk '{printf("%.2f", $3/$2 * 100.0)}')
echo "[$DATE] Memory Usage: $MEMORY_USAGE%" >> $LOG_FILE
- Проверка использования диска
DISK_USAGE=$(df /opt/minecraft | tail -1 | awk '{print $5}' | sed 's/%//')
echo "[$DATE] Disk Usage: $DISK_USAGE%" >> $LOG_FILE
- Проверка JVM статистики
if pgrep -f "spigot\|paper" > /dev/null; then
PID=$(pgrep -f "spigot\|paper" | head -1)
GC_TIME=$(jstat -gc $PID | tail -1 | awk '{print $3+$5}')
echo "[$DATE] GC Time: $GC_TIME ms" >> $LOG_FILE
fi
- Проверка сетевого трафика
NETWORK_USAGE=$(cat /proc/net/dev | grep eth0 | awk '{print $2+$10}')
echo "[$DATE] Network Usage: $NETWORK_USAGE bytes" >> $LOG_FILE
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/minecraft-performance-monitor.sh
4. Добавьте в crontab:
sudo crontab -e
5. Добавьте задачу:
*/1 * * * * /usr/local/bin/minecraft-performance-monitor.sh
8. Оптимизация сети =
Настройка TCP параметров
1. Создайте файл настроек сети:
sudo nano /etc/sysctl.d/99-minecraft.conf
2. Добавьте настройки:
# Оптимизация сети для Minecraft
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 65536 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
3. Примените изменения:
sudo sysctl -p /etc/sysctl.d/99-minecraft.conf
Настройка файрвола
1. Оптимизируйте iptables:
sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
2. Сохраните правила:
sudo iptables-save > /etc/iptables/rules.v4
9. Оптимизация плагинов =
Настройка EssentialsX
1. Отредактируйте конфигурацию:
nano /opt/minecraft/spigot/plugins/Essentials/config.yml
2. Оптимизируйте настройки:
# Оптимизация EssentialsX
chat:
format: '&7[&6{GROUP}&7] &f{DISPLAYNAME}&7: &f{MESSAGE}'
radius: 0
local-format: '&7[&6{GROUP}&7] &f{DISPLAYNAME}&7: &f{MESSAGE}'
- Оптимизация телепортации
teleport:
delay: 0
cooldown: 0
invulnerability: 0
- Оптимизация экономики
economy:
currency-symbol: '$'
starting-balance: 0.0
max-money: 1000000.0
min-pay-amount: 0.0
Настройка WorldEdit
1. Отредактируйте конфигурацию:
nano /opt/minecraft/spigot/plugins/WorldEdit/config.yml
2. Оптимизируйте настройки:
# Оптимизация WorldEdit
max-blocks-per-chunk: 65536
max-blocks-per-chunk-analyze: 65536
max-blocks-per-chunk-ops: 65536
- Оптимизация истории
history:
size: 15
use-disk: true
use-database: false
- Оптимизация экономики
economy:
cost: 0.0
use-cost: false
10. Устранение неполадок =
Частые проблемы
1. Высокое использование CPU:
- Оптимизируйте JVM параметры
- Проверьте настройки тиков
- Уменьшите количество мобов
2. Высокое использование памяти:
- Увеличьте выделенную память
- Оптимизируйте G1GC настройки
- Проверьте утечки памяти
3. Проблемы с сетью:
- Оптимизируйте TCP параметры
- Проверьте настройки файрвола
- Увеличьте буферы сети
Диагностика
1. Проверка производительности:
htop
iotop
nethogs
2. Проверка JVM статистики:
jstat -gc <PID>
jstat -gccapacity <PID>
3. Проверка сетевых соединений:
netstat -tlnp | grep :25565
ss -tlnp | grep :25565
Заключение
Minecraft сервер успешно оптимизирован! Теперь у вас есть высокопроизводительный сервер с оптимизированными JVM параметрами, системными настройками и мониторингом.
Для размещения ваших оптимизированных Minecraft серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних серверов
Наши специалисты помогут с оптимизацией производительности ваших Minecraft серверов!