Оптимизация производительности Minecraft сервера — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Оптимизация производительности Minecraft сервера = == 1. Подготовка системы == * Войдите в сис…»)
(нет различий)

Версия 09:20, 15 октября 2025

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

  1. Оптимизированные 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"

  1. Запуск сервера

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
  1. Оптимизация тиков

tick-rates:

 grass-spread: 4
 container-update: 1
 mob-spawner: 1
  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

  1. Оптимизация чанков

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
  1. Оптимизация мобов

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
  1. Оптимизация тиков

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 сервера

  1. Увеличение буферов сети

net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 65536 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216

  1. Оптимизация TCP

net.ipv4.tcp_congestion_control = bbr net.ipv4.tcp_slow_start_after_idle = 0 net.ipv4.tcp_tw_reuse = 1

  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

  1. Мониторинг производительности Minecraft сервера

LOG_FILE="/var/log/minecraft-performance.log" DATE=$(date '+%Y-%m-%d %H:%M:%S')

  1. Проверка использования CPU

CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'%' '{print $1}') echo "[$DATE] CPU Usage: $CPU_USAGE%" >> $LOG_FILE

  1. Проверка использования памяти

MEMORY_USAGE=$(free | grep Mem | awk '{printf("%.2f", $3/$2 * 100.0)}') echo "[$DATE] Memory Usage: $MEMORY_USAGE%" >> $LOG_FILE

  1. Проверка использования диска

DISK_USAGE=$(df /opt/minecraft | tail -1 | awk '{print $5}' | sed 's/%//') echo "[$DATE] Disk Usage: $DISK_USAGE%" >> $LOG_FILE

  1. Проверка 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

  1. Проверка сетевого трафика

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}'
  1. Оптимизация телепортации

teleport:

 delay: 0
 cooldown: 0
 invulnerability: 0
  1. Оптимизация экономики

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

  1. Оптимизация истории

history:

 size: 15
 use-disk: true
 use-database: false
  1. Оптимизация экономики

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):

Наши специалисты помогут с оптимизацией производительности ваших Minecraft серверов!