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