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

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Оптимизация производительности Minecraft сервера = == 1. Подготовка системы == * Войдите в сис…»)
 
 
Строка 7: Строка 7:
 
* Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы.
 
* Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы.
  
== 2. Оптимизация JVM параметров ===
+
== 2. Оптимизация JVM параметров ==
  
 
=== Настройка памяти ===
 
=== Настройка памяти ===
  
 
1. Отредактируйте systemd сервис:
 
1. Отредактируйте systemd сервис:
<code>sudo nano /etc/systemd/system/minecraft-spigot.service</code>
+
<pre>sudo nano /etc/systemd/system/minecraft-spigot.service</pre>
  
 
2. Оптимизируйте JVM параметры:
 
2. Оптимизируйте JVM параметры:
<code>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</code>
+
<pre>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</pre>
  
 
=== Настройка G1GC ===
 
=== Настройка G1GC ===
  
 
1. Создайте оптимизированный скрипт запуска:
 
1. Создайте оптимизированный скрипт запуска:
<code>nano /opt/minecraft/spigot/start-optimized.sh</code>
+
<pre>nano /opt/minecraft/spigot/start-optimized.sh</pre>
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>#!/bin/bash
+
<pre>\#!/bin/bash
  
# Оптимизированные JVM параметры
+
\# Оптимизированные JVM параметры
 
JAVA_OPTS="-Xms4G -Xmx8G"
 
JAVA_OPTS="-Xms4G -Xmx8G"
 
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
 
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
Строка 48: Строка 48:
 
JAVA_OPTS="$JAVA_OPTS -Daikars.new.flags=true"
 
JAVA_OPTS="$JAVA_OPTS -Daikars.new.flags=true"
  
# Запуск сервера
+
\# Запуск сервера
 
java $JAVA_OPTS -jar spigot-1.20.1.jar nogui
 
java $JAVA_OPTS -jar spigot-1.20.1.jar nogui
</code>
+
</pre>
  
 
3. Сделайте скрипт исполняемым:
 
3. Сделайте скрипт исполняемым:
<code>chmod +x start-optimized.sh</code>
+
<pre>chmod +x start-optimized.sh</pre>
  
== 3. Оптимизация Paper конфигурации ===
+
== 3. Оптимизация Paper конфигурации ==
  
 
=== Настройка paper-global.yml ===
 
=== Настройка paper-global.yml ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>nano /opt/minecraft/paper/paper-global.yml</code>
+
<pre>nano /opt/minecraft/paper/paper-global.yml</pre>
  
 
2. Оптимизируйте настройки:
 
2. Оптимизируйте настройки:
<code># Paper Global Configuration
+
<pre>\# Paper Global Configuration
 
_version: 25
 
_version: 25
 
misc:
 
misc:
Строка 75: Строка 75:
 
   fix-climbing-bypassing-cramming-rule: false
 
   fix-climbing-bypassing-cramming-rule: false
  
# Оптимизация тиков
+
\# Оптимизация тиков
 
tick-rates:
 
tick-rates:
 
   grass-spread: 4
 
   grass-spread: 4
Строка 81: Строка 81:
 
   mob-spawner: 1
 
   mob-spawner: 1
  
# Оптимизация мобов
+
\# Оптимизация мобов
 
mob-spawner:
 
mob-spawner:
 
   tick-rate: 1
 
   tick-rate: 1
Строка 91: Строка 91:
 
     water_ambient: 20
 
     water_ambient: 20
 
     misc: -1
 
     misc: -1
</code>
+
</pre>
  
 
=== Настройка paper-world-defaults.yml ===
 
=== Настройка paper-world-defaults.yml ===
  
 
1. Отредактируйте конфигурацию мира:
 
1. Отредактируйте конфигурацию мира:
<code>nano /opt/minecraft/paper/paper-world-defaults.yml</code>
+
<pre>nano /opt/minecraft/paper/paper-world-defaults.yml</pre>
  
 
2. Оптимизируйте настройки:
 
2. Оптимизируйте настройки:
<code># Paper World Defaults Configuration
+
<pre>\# Paper World Defaults Configuration
# Оптимизация чанков
+
\# Оптимизация чанков
 
chunk-loading:
 
chunk-loading:
 
   autoconfig-send-distance: true
 
   autoconfig-send-distance: true
Строка 111: Строка 111:
 
   target-player-chunk-send-rate: 100
 
   target-player-chunk-send-rate: 100
  
# Оптимизация мобов
+
\# Оптимизация мобов
 
entities:
 
entities:
 
   spawning:
 
   spawning:
Строка 129: Строка 129:
 
     per-player-mob-spawns: true
 
     per-player-mob-spawns: true
 
     spawner-nerfed-mobs-should-jump: true
 
     spawner-nerfed-mobs-should-jump: true
</code>
+
</pre>
  
== 4. Оптимизация Spigot конфигурации ===
+
== 4. Оптимизация Spigot конфигурации ==
  
 
=== Настройка spigot.yml ===
 
=== Настройка spigot.yml ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>nano /opt/minecraft/spigot/spigot.yml</code>
+
<pre>nano /opt/minecraft/spigot/spigot.yml</pre>
  
 
2. Оптимизируйте настройки:
 
2. Оптимизируйте настройки:
<code># Spigot Configuration
+
<pre>\# Spigot Configuration
 
settings:
 
settings:
 
   debug: false
 
   debug: false
Строка 157: Строка 157:
 
   log-named-deaths: true
 
   log-named-deaths: true
  
# Оптимизация тиков
+
\# Оптимизация тиков
 
world-settings:
 
world-settings:
 
   default:
 
   default:
Строка 193: Строка 193:
 
     seed-ruined-portal: 34222645
 
     seed-ruined-portal: 34222645
 
     seed-geode: 14357622
 
     seed-geode: 14357622
</code>
+
</pre>
  
== 5. Оптимизация системы ===
+
== 5. Оптимизация системы ==
  
 
=== Настройка ядра системы ===
 
=== Настройка ядра системы ===
  
 
1. Отредактируйте sysctl.conf:
 
1. Отредактируйте sysctl.conf:
<code>sudo nano /etc/sysctl.conf</code>
+
<pre>sudo nano /etc/sysctl.conf</pre>
  
 
2. Добавьте оптимизации:
 
2. Добавьте оптимизации:
<code># Оптимизация для Minecraft сервера
+
<pre>\# Оптимизация для Minecraft сервера
# Увеличение буферов сети
+
\# Увеличение буферов сети
 
net.core.rmem_max = 16777216
 
net.core.rmem_max = 16777216
 
net.core.wmem_max = 16777216
 
net.core.wmem_max = 16777216
Строка 210: Строка 210:
 
net.ipv4.tcp_wmem = 4096 65536 16777216
 
net.ipv4.tcp_wmem = 4096 65536 16777216
  
# Оптимизация TCP
+
\# Оптимизация TCP
 
net.ipv4.tcp_congestion_control = bbr
 
net.ipv4.tcp_congestion_control = bbr
 
net.ipv4.tcp_slow_start_after_idle = 0
 
net.ipv4.tcp_slow_start_after_idle = 0
 
net.ipv4.tcp_tw_reuse = 1
 
net.ipv4.tcp_tw_reuse = 1
  
# Оптимизация памяти
+
\# Оптимизация памяти
 
vm.swappiness = 10
 
vm.swappiness = 10
 
vm.dirty_ratio = 15
 
vm.dirty_ratio = 15
 
vm.dirty_background_ratio = 5
 
vm.dirty_background_ratio = 5
</code>
+
</pre>
  
 
3. Примените изменения:
 
3. Примените изменения:
<code>sudo sysctl -p</code>
+
<pre>sudo sysctl -p</pre>
  
 
=== Настройка лимитов системы ===
 
=== Настройка лимитов системы ===
  
 
1. Отредактируйте limits.conf:
 
1. Отредактируйте limits.conf:
<code>sudo nano /etc/security/limits.conf</code>
+
<pre>sudo nano /etc/security/limits.conf</pre>
  
 
2. Добавьте лимиты:
 
2. Добавьте лимиты:
<code># Лимиты для пользователя minecraft
+
<pre>\# Лимиты для пользователя minecraft
 
minecraft soft nofile 65536
 
minecraft soft nofile 65536
 
minecraft hard nofile 65536
 
minecraft hard nofile 65536
 
minecraft soft nproc 32768
 
minecraft soft nproc 32768
 
minecraft hard nproc 32768
 
minecraft hard nproc 32768
</code>
+
</pre>
  
== 6. Оптимизация диска ===
+
== 6. Оптимизация диска ==
  
 
=== Настройка SSD ===
 
=== Настройка SSD ===
  
 
1. Проверьте тип диска:
 
1. Проверьте тип диска:
<code>lsblk -d -o name,rota</code>
+
<pre>lsblk -d -o name,rota</pre>
  
 
2. Если SSD, настройте TRIM:
 
2. Если SSD, настройте TRIM:
<code>sudo systemctl enable fstrim.timer</code>
+
<pre>sudo systemctl enable fstrim.timer</pre>
<code>sudo systemctl start fstrim.timer</code>
+
<pre>sudo systemctl start fstrim.timer</pre>
  
 
=== Настройка файловой системы ===
 
=== Настройка файловой системы ===
  
 
1. Проверьте файловую систему:
 
1. Проверьте файловую систему:
<code>df -T</code>
+
<pre>df -T</pre>
  
 
2. Если ext4, настройте оптимизации:
 
2. Если ext4, настройте оптимизации:
<code>sudo tune2fs -o journal_data_writeback /dev/sda1</code>
+
<pre>sudo tune2fs -o journal_data_writeback /dev/sda1</pre>
<code>sudo tune2fs -O ^has_journal /dev/sda1</code>
+
<pre>sudo tune2fs -O ^has_journal /dev/sda1</pre>
  
== 7. Мониторинг производительности ===
+
== 7. Мониторинг производительности ==
  
 
=== Установка инструментов мониторинга ===
 
=== Установка инструментов мониторинга ===
  
 
1. Установите необходимые пакеты:
 
1. Установите необходимые пакеты:
<code>sudo apt install -y htop iotop nethogs</code>
+
<pre>sudo apt install -y htop iotop nethogs</pre>
  
 
2. Установите jstat для мониторинга JVM:
 
2. Установите jstat для мониторинга JVM:
<code>sudo apt install -y openjdk-21-jdk</code>
+
<pre>sudo apt install -y openjdk-21-jdk</pre>
  
 
=== Создание скрипта мониторинга ===
 
=== Создание скрипта мониторинга ===
  
 
1. Создайте скрипт мониторинга:
 
1. Создайте скрипт мониторинга:
<code>sudo nano /usr/local/bin/minecraft-performance-monitor.sh</code>
+
<pre>sudo nano /usr/local/bin/minecraft-performance-monitor.sh</pre>
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>#!/bin/bash
+
<pre>\#!/bin/bash
  
# Мониторинг производительности Minecraft сервера
+
\# Мониторинг производительности Minecraft сервера
 
LOG_FILE="/var/log/minecraft-performance.log"
 
LOG_FILE="/var/log/minecraft-performance.log"
 
DATE=$(date '+%Y-%m-%d %H:%M:%S')
 
DATE=$(date '+%Y-%m-%d %H:%M:%S')
  
# Проверка использования CPU
+
\# Проверка использования CPU
 
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'%' '{print $1}')
 
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'%' '{print $1}')
 
echo "[$DATE] CPU Usage: $CPU_USAGE%" >> $LOG_FILE
 
echo "[$DATE] CPU Usage: $CPU_USAGE%" >> $LOG_FILE
  
# Проверка использования памяти
+
\# Проверка использования памяти
 
MEMORY_USAGE=$(free | grep Mem | awk '{printf("%.2f", $3/$2 * 100.0)}')
 
MEMORY_USAGE=$(free | grep Mem | awk '{printf("%.2f", $3/$2 * 100.0)}')
 
echo "[$DATE] Memory Usage: $MEMORY_USAGE%" >> $LOG_FILE
 
echo "[$DATE] Memory Usage: $MEMORY_USAGE%" >> $LOG_FILE
  
# Проверка использования диска
+
\# Проверка использования диска
 
DISK_USAGE=$(df /opt/minecraft | tail -1 | awk '{print $5}' | sed 's/%//')
 
DISK_USAGE=$(df /opt/minecraft | tail -1 | awk '{print $5}' | sed 's/%//')
 
echo "[$DATE] Disk Usage: $DISK_USAGE%" >> $LOG_FILE
 
echo "[$DATE] Disk Usage: $DISK_USAGE%" >> $LOG_FILE
  
# Проверка JVM статистики
+
\# Проверка JVM статистики
 
if pgrep -f "spigot\|paper" > /dev/null; then
 
if pgrep -f "spigot\|paper" > /dev/null; then
 
     PID=$(pgrep -f "spigot\|paper" | head -1)
 
     PID=$(pgrep -f "spigot\|paper" | head -1)
Строка 298: Строка 298:
 
fi
 
fi
  
# Проверка сетевого трафика
+
\# Проверка сетевого трафика
 
NETWORK_USAGE=$(cat /proc/net/dev | grep eth0 | awk '{print $2+$10}')
 
NETWORK_USAGE=$(cat /proc/net/dev | grep eth0 | awk '{print $2+$10}')
 
echo "[$DATE] Network Usage: $NETWORK_USAGE bytes" >> $LOG_FILE
 
echo "[$DATE] Network Usage: $NETWORK_USAGE bytes" >> $LOG_FILE
</code>
+
</pre>
  
 
3. Сделайте скрипт исполняемым:
 
3. Сделайте скрипт исполняемым:
<code>sudo chmod +x /usr/local/bin/minecraft-performance-monitor.sh</code>
+
<pre>sudo chmod +x /usr/local/bin/minecraft-performance-monitor.sh</pre>
  
 
4. Добавьте в crontab:
 
4. Добавьте в crontab:
<code>sudo crontab -e</code>
+
<pre>sudo crontab -e</pre>
  
 
5. Добавьте задачу:
 
5. Добавьте задачу:
<code>*/1 * * * * /usr/local/bin/minecraft-performance-monitor.sh</code>
+
<pre>*/1 * * * * /usr/local/bin/minecraft-performance-monitor.sh</pre>
  
== 8. Оптимизация сети ===
+
== 8. Оптимизация сети ==
  
 
=== Настройка TCP параметров ===
 
=== Настройка TCP параметров ===
  
 
1. Создайте файл настроек сети:
 
1. Создайте файл настроек сети:
<code>sudo nano /etc/sysctl.d/99-minecraft.conf</code>
+
<pre>sudo nano /etc/sysctl.d/99-minecraft.conf</pre>
  
 
2. Добавьте настройки:
 
2. Добавьте настройки:
<code># Оптимизация сети для Minecraft
+
<pre>\# Оптимизация сети для Minecraft
 
net.core.rmem_max = 16777216
 
net.core.rmem_max = 16777216
 
net.core.wmem_max = 16777216
 
net.core.wmem_max = 16777216
Строка 332: Строка 332:
 
net.ipv4.tcp_keepalive_intvl = 30
 
net.ipv4.tcp_keepalive_intvl = 30
 
net.ipv4.tcp_keepalive_probes = 3
 
net.ipv4.tcp_keepalive_probes = 3
</code>
+
</pre>
  
 
3. Примените изменения:
 
3. Примените изменения:
<code>sudo sysctl -p /etc/sysctl.d/99-minecraft.conf</code>
+
<pre>sudo sysctl -p /etc/sysctl.d/99-minecraft.conf</pre>
  
 
=== Настройка файрвола ===
 
=== Настройка файрвола ===
  
 
1. Оптимизируйте iptables:
 
1. Оптимизируйте iptables:
<code>sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT</code>
+
<pre>sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT</pre>
<code>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</code>
+
<pre>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</pre>
  
 
2. Сохраните правила:
 
2. Сохраните правила:
<code>sudo iptables-save > /etc/iptables/rules.v4</code>
+
<pre>sudo iptables-save > /etc/iptables/rules.v4</pre>
  
== 9. Оптимизация плагинов ===
+
== 9. Оптимизация плагинов ==
  
 
=== Настройка EssentialsX ===
 
=== Настройка EssentialsX ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>nano /opt/minecraft/spigot/plugins/Essentials/config.yml</code>
+
<pre>nano /opt/minecraft/spigot/plugins/Essentials/config.yml</pre>
  
 
2. Оптимизируйте настройки:
 
2. Оптимизируйте настройки:
<code># Оптимизация EssentialsX
+
<pre>\# Оптимизация EssentialsX
 
chat:
 
chat:
 
   format: '&7[&6{GROUP}&7] &f{DISPLAYNAME}&7: &f{MESSAGE}'
 
   format: '&7[&6{GROUP}&7] &f{DISPLAYNAME}&7: &f{MESSAGE}'
Строка 360: Строка 360:
 
   local-format: '&7[&6{GROUP}&7] &f{DISPLAYNAME}&7: &f{MESSAGE}'
 
   local-format: '&7[&6{GROUP}&7] &f{DISPLAYNAME}&7: &f{MESSAGE}'
  
# Оптимизация телепортации
+
\# Оптимизация телепортации
 
teleport:
 
teleport:
 
   delay: 0
 
   delay: 0
Строка 366: Строка 366:
 
   invulnerability: 0
 
   invulnerability: 0
  
# Оптимизация экономики
+
\# Оптимизация экономики
 
economy:
 
economy:
 
   currency-symbol: '$'
 
   currency-symbol: '$'
Строка 372: Строка 372:
 
   max-money: 1000000.0
 
   max-money: 1000000.0
 
   min-pay-amount: 0.0
 
   min-pay-amount: 0.0
</code>
+
</pre>
  
 
=== Настройка WorldEdit ===
 
=== Настройка WorldEdit ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>nano /opt/minecraft/spigot/plugins/WorldEdit/config.yml</code>
+
<pre>nano /opt/minecraft/spigot/plugins/WorldEdit/config.yml</pre>
  
 
2. Оптимизируйте настройки:
 
2. Оптимизируйте настройки:
<code># Оптимизация WorldEdit
+
<pre>\# Оптимизация WorldEdit
 
max-blocks-per-chunk: 65536
 
max-blocks-per-chunk: 65536
 
max-blocks-per-chunk-analyze: 65536
 
max-blocks-per-chunk-analyze: 65536
 
max-blocks-per-chunk-ops: 65536
 
max-blocks-per-chunk-ops: 65536
  
# Оптимизация истории
+
\# Оптимизация истории
 
history:
 
history:
 
   size: 15
 
   size: 15
Строка 391: Строка 391:
 
   use-database: false
 
   use-database: false
  
# Оптимизация экономики
+
\# Оптимизация экономики
 
economy:
 
economy:
 
   cost: 0.0
 
   cost: 0.0
 
   use-cost: false
 
   use-cost: false
</code>
+
</pre>
  
== 10. Устранение неполадок ===
+
== 10. Устранение неполадок ==
  
 
=== Частые проблемы ===
 
=== Частые проблемы ===
Строка 419: Строка 419:
  
 
1. '''Проверка производительности''':
 
1. '''Проверка производительности''':
<code>htop</code>
+
<pre>htop</pre>
<code>iotop</code>
+
<pre>iotop</pre>
<code>nethogs</code>
+
<pre>nethogs</pre>
  
 
2. '''Проверка JVM статистики''':
 
2. '''Проверка JVM статистики''':
<code>jstat -gc <PID></code>
+
<pre>jstat -gc <PID></pre>
<code>jstat -gccapacity <PID></code>
+
<pre>jstat -gccapacity <PID></pre>
  
 
3. '''Проверка сетевых соединений''':
 
3. '''Проверка сетевых соединений''':
<code>netstat -tlnp | grep :25565</code>
+
<pre>netstat -tlnp | grep :25565</pre>
<code>ss -tlnp | grep :25565</code>
+
<pre>ss -tlnp | grep :25565</pre>
  
 
== Заключение ==
 
== Заключение ==

Текущая версия на 10:40, 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

\# Оптимизированные 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):

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