Оптимизация производительности Minecraft сервера: различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Оптимизация производительности Minecraft сервера = == 1. Подготовка системы == * Войдите в сис…» |
Admin (обсуждение | вклад) Нет описания правки |
||
| Строка 7: | Строка 7: | ||
* Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы. | * Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы. | ||
== 2. Оптимизация JVM параметров | == 2. Оптимизация JVM параметров == | ||
=== Настройка памяти === | === Настройка памяти === | ||
1. Отредактируйте systemd сервис: | 1. Отредактируйте systemd сервис: | ||
< | <pre>sudo nano /etc/systemd/system/minecraft-spigot.service</pre> | ||
2. Оптимизируйте JVM параметры: | 2. Оптимизируйте JVM параметры: | ||
< | <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. Создайте оптимизированный скрипт запуска: | ||
< | <pre>nano /opt/minecraft/spigot/start-optimized.sh</pre> | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <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 | ||
</ | </pre> | ||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>chmod +x start-optimized.sh</pre> | ||
== 3. Оптимизация Paper конфигурации | == 3. Оптимизация Paper конфигурации == | ||
=== Настройка paper-global.yml === | === Настройка paper-global.yml === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>nano /opt/minecraft/paper/paper-global.yml</pre> | ||
2. Оптимизируйте настройки: | 2. Оптимизируйте настройки: | ||
< | <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 | ||
</ | </pre> | ||
=== Настройка paper-world-defaults.yml === | === Настройка paper-world-defaults.yml === | ||
1. Отредактируйте конфигурацию мира: | 1. Отредактируйте конфигурацию мира: | ||
< | <pre>nano /opt/minecraft/paper/paper-world-defaults.yml</pre> | ||
2. Оптимизируйте настройки: | 2. Оптимизируйте настройки: | ||
< | <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 | ||
</ | </pre> | ||
== 4. Оптимизация Spigot конфигурации | == 4. Оптимизация Spigot конфигурации == | ||
=== Настройка spigot.yml === | === Настройка spigot.yml === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>nano /opt/minecraft/spigot/spigot.yml</pre> | ||
2. Оптимизируйте настройки: | 2. Оптимизируйте настройки: | ||
< | <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 | ||
</ | </pre> | ||
== 5. Оптимизация системы | == 5. Оптимизация системы == | ||
=== Настройка ядра системы === | === Настройка ядра системы === | ||
1. Отредактируйте sysctl.conf: | 1. Отредактируйте sysctl.conf: | ||
< | <pre>sudo nano /etc/sysctl.conf</pre> | ||
2. Добавьте оптимизации: | 2. Добавьте оптимизации: | ||
< | <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 | ||
</ | </pre> | ||
3. Примените изменения: | 3. Примените изменения: | ||
< | <pre>sudo sysctl -p</pre> | ||
=== Настройка лимитов системы === | === Настройка лимитов системы === | ||
1. Отредактируйте limits.conf: | 1. Отредактируйте limits.conf: | ||
< | <pre>sudo nano /etc/security/limits.conf</pre> | ||
2. Добавьте лимиты: | 2. Добавьте лимиты: | ||
< | <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 | ||
</ | </pre> | ||
== 6. Оптимизация диска | == 6. Оптимизация диска == | ||
=== Настройка SSD === | === Настройка SSD === | ||
1. Проверьте тип диска: | 1. Проверьте тип диска: | ||
< | <pre>lsblk -d -o name,rota</pre> | ||
2. Если SSD, настройте TRIM: | 2. Если SSD, настройте TRIM: | ||
< | <pre>sudo systemctl enable fstrim.timer</pre> | ||
< | <pre>sudo systemctl start fstrim.timer</pre> | ||
=== Настройка файловой системы === | === Настройка файловой системы === | ||
1. Проверьте файловую систему: | 1. Проверьте файловую систему: | ||
< | <pre>df -T</pre> | ||
2. Если ext4, настройте оптимизации: | 2. Если ext4, настройте оптимизации: | ||
< | <pre>sudo tune2fs -o journal_data_writeback /dev/sda1</pre> | ||
< | <pre>sudo tune2fs -O ^has_journal /dev/sda1</pre> | ||
== 7. Мониторинг производительности | == 7. Мониторинг производительности == | ||
=== Установка инструментов мониторинга === | === Установка инструментов мониторинга === | ||
1. Установите необходимые пакеты: | 1. Установите необходимые пакеты: | ||
< | <pre>sudo apt install -y htop iotop nethogs</pre> | ||
2. Установите jstat для мониторинга JVM: | 2. Установите jstat для мониторинга JVM: | ||
< | <pre>sudo apt install -y openjdk-21-jdk</pre> | ||
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
< | <pre>sudo nano /usr/local/bin/minecraft-performance-monitor.sh</pre> | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <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 | ||
</ | </pre> | ||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/minecraft-performance-monitor.sh</pre> | ||
4. Добавьте в crontab: | 4. Добавьте в crontab: | ||
< | <pre>sudo crontab -e</pre> | ||
5. Добавьте задачу: | 5. Добавьте задачу: | ||
< | <pre>*/1 * * * * /usr/local/bin/minecraft-performance-monitor.sh</pre> | ||
== 8. Оптимизация сети | == 8. Оптимизация сети == | ||
=== Настройка TCP параметров === | === Настройка TCP параметров === | ||
1. Создайте файл настроек сети: | 1. Создайте файл настроек сети: | ||
< | <pre>sudo nano /etc/sysctl.d/99-minecraft.conf</pre> | ||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
< | <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 | ||
</ | </pre> | ||
3. Примените изменения: | 3. Примените изменения: | ||
< | <pre>sudo sysctl -p /etc/sysctl.d/99-minecraft.conf</pre> | ||
=== Настройка файрвола === | === Настройка файрвола === | ||
1. Оптимизируйте iptables: | 1. Оптимизируйте iptables: | ||
< | <pre>sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT</pre> | ||
< | <pre>sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT</pre> | ||
2. Сохраните правила: | 2. Сохраните правила: | ||
< | <pre>sudo iptables-save > /etc/iptables/rules.v4</pre> | ||
== 9. Оптимизация плагинов | == 9. Оптимизация плагинов == | ||
=== Настройка EssentialsX === | === Настройка EssentialsX === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>nano /opt/minecraft/spigot/plugins/Essentials/config.yml</pre> | ||
2. Оптимизируйте настройки: | 2. Оптимизируйте настройки: | ||
< | <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 | ||
</ | </pre> | ||
=== Настройка WorldEdit === | === Настройка WorldEdit === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
< | <pre>nano /opt/minecraft/spigot/plugins/WorldEdit/config.yml</pre> | ||
2. Оптимизируйте настройки: | 2. Оптимизируйте настройки: | ||
< | <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 | ||
</ | </pre> | ||
== 10. Устранение неполадок | == 10. Устранение неполадок == | ||
=== Частые проблемы === | === Частые проблемы === | ||
| Строка 419: | Строка 419: | ||
1. '''Проверка производительности''': | 1. '''Проверка производительности''': | ||
< | <pre>htop</pre> | ||
< | <pre>iotop</pre> | ||
< | <pre>nethogs</pre> | ||
2. '''Проверка JVM статистики''': | 2. '''Проверка JVM статистики''': | ||
< | <pre>jstat -gc <PID></pre> | ||
< | <pre>jstat -gccapacity <PID></pre> | ||
3. '''Проверка сетевых соединений''': | 3. '''Проверка сетевых соединений''': | ||
< | <pre>netstat -tlnp | grep :25565</pre> | ||
< | <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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних серверов
Наши специалисты помогут с оптимизацией производительности ваших Minecraft серверов!