Оптимизация производительности 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 серверов!