Оптимизация производительности Bedrock сервера
Содержание
- 1 Оптимизация производительности Bedrock сервера
- 1.1 1. Подготовка системы
- 1.2 2. Анализ текущей производительности
- 1.3 3. Оптимизация server.properties
- 1.4 4. Оптимизация операционной системы
- 1.5 5. Оптимизация файловой системы
- 1.6 6. Оптимизация сетевых настроек
- 1.7 7. Оптимизация systemd сервиса
- 1.8 8. Оптимизация памяти
- 1.9 9. Оптимизация сетевой задержки
- 1.10 10. Оптимизация дискового I/O
- 1.11 11. Оптимизация конфигурации мира
- 1.12 12. Мониторинг производительности
- 1.13 13. Тестирование производительности
- 1.14 14. Рекомендации по оборудованию
- 1.15 15. Устранение неполадок
- 1.16 Заключение
Оптимизация производительности Bedrock сервера
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что Bedrock сервер установлен и работает.
- Рекомендуется использовать Ubuntu 24.04 LTS для стабильной работы.
- Проверьте текущую производительность перед оптимизацией.
2. Анализ текущей производительности
Проверка использования ресурсов
1. Проверьте использование CPU:
top htop vmstat 1 5
2. Проверьте использование памяти:
free -h cat /proc/meminfo
3. Проверьте использование диска:
df -h iostat -x 1 5
4. Проверьте использование сети:
iftop nethogs ss -tuln
Мониторинг процесса Bedrock
1. Найдите процесс Bedrock:
ps aux | grep bedrock_server
2. Проверьте использование ресурсов процессом:
pidstat -p $(pgrep bedrock_server) 1 10
3. Проверьте сетевую активность:
netstat -anp | grep bedrock_server ss -tuln | grep 19132
3. Оптимизация server.properties
Настройка view-distance
1. Оптимизируйте дистанцию прорисовки:
cd /opt/bedrock nano server.properties
2. Установите оптимальное значение:
\# Для серверов с 4-8GB RAM view-distance=24 \# Для серверов с 8-16GB RAM view-distance=32 \# Для серверов с 16GB+ RAM view-distance=48
3. Пример для низкопроизводительного сервера:
view-distance=16 \# Уменьшает использование памяти и CPU
Настройка tick-distance
1. Оптимизируйте дистанцию обработки:
\# Минимальная нагрузка tick-distance=4 \# Баланс (рекомендуется) tick-distance=6 \# Максимальная активность tick-distance=8
2. Пример для оптимизации:
tick-distance=4 \# Уменьшает обработку чанков, повышает производительность
Настройка max-threads
1. Установите оптимальное количество потоков:
\# Для 2 ядер CPU max-threads=2 \# Для 4 ядер CPU max-threads=4 \# Для 8 ядер CPU max-threads=6 \# Оставьте 2 ядра для системы
2. Проверьте количество ядер:
nproc lscpu | grep "CPU(s)"
Настройка сжатия
1. Оптимизируйте compression-threshold:
\# Сжатие всех пакетов (больше CPU, меньше трафика) compression-threshold=1 \# Баланс compression-threshold=256 \# Меньше сжатия (меньше CPU, больше трафика) compression-threshold=512
2. Пример для высоконагруженного сервера:
compression-threshold=512 \# Снижает нагрузку на CPU
4. Оптимизация операционной системы
Настройка sysctl параметров
1. Отредактируйте конфигурацию:
sudo nano /etc/sysctl.conf
2. Добавьте оптимизации:
\# Увеличение буферов сети net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 5000 \# Оптимизация TCP net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 300 \# Отключение медленного старта TCP net.ipv4.tcp_slow_start_after_idle = 0 \# Оптимизация памяти vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2
3. Примените изменения:
sudo sysctl -p
Настройка лимитов системы
1. Отредактируйте limits.conf:
sudo nano /etc/security/limits.conf
2. Добавьте лимиты для пользователя bedrock:
bedrock soft nofile 65536 bedrock hard nofile 65536 bedrock soft nproc 32768 bedrock hard nproc 32768
3. Проверьте текущие лимиты:
ulimit -a
Настройка I/O планировщика
1. Проверьте текущий планировщик:
cat /sys/block/sda/queue/scheduler
2. Установите планировщик для SSD:
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
3. Для NVMe SSD:
echo none | sudo tee /sys/block/nvme0n1/queue/scheduler
5. Оптимизация файловой системы
Настройка монтирования
1. Проверьте текущие опции монтирования:
mount | grep /opt/bedrock
2. Отредактируйте /etc/fstab:
sudo nano /etc/fstab
3. Добавьте оптимизации для ext4:
/dev/sda1 /opt ext4 defaults,noatime,nodiratime,commit=60 0 2
4. Пример для XFS:
/dev/sda1 /opt xfs defaults,noatime,nodiratime 0 2
5. Примените изменения:
sudo mount -o remount /opt
Оптимизация дискового кэша
1. Настройте dirty ratios:
sudo sysctl -w vm.dirty_ratio=60 sudo sysctl -w vm.dirty_background_ratio=2
2. Для быстрых SSD уменьшите значения:
sudo sysctl -w vm.dirty_ratio=20 sudo sysctl -w vm.dirty_background_ratio=1
6. Оптимизация сетевых настроек
Настройка TCP параметров
1. Отредактируйте сетевые настройки:
sudo nano /etc/sysctl.conf
2. Добавьте оптимизации UDP (для Bedrock):
\# Увеличение буферов UDP net.core.rmem_default = 262144 net.core.rmem_max = 16777216 net.core.wmem_default = 262144 net.core.wmem_max = 16777216 \# Оптимизация для игровых серверов net.core.netdev_max_backlog = 5000 net.ipv4.udp_mem = 262144 327680 16777216
3. Примените изменения:
sudo sysctl -p
Настройка файрвола
1. Оптимизируйте правила UFW:
sudo ufw allow 19132/udp comment 'Bedrock Server' sudo ufw allow 19133/udp comment 'Bedrock Server IPv6'
2. Проверьте производительность правил:
sudo ufw status numbered
7. Оптимизация systemd сервиса
Настройка приоритетов
1. Отредактируйте сервис:
sudo nano /etc/systemd/system/minecraft-bedrock.service
2. Добавьте оптимизации:
[Unit] Description=Minecraft Bedrock Server After=network.target [Service] Type=simple User=bedrock Group=bedrock WorkingDirectory=/opt/bedrock ExecStart=/opt/bedrock/bedrock_server ExecStop=/bin/kill -15 $MAINPID Restart=always RestartSec=10 \# Оптимизации производительности Nice=-5 IOSchedulingClass=realtime IOSchedulingPriority=0 CPUSchedulingPolicy=fifo CPUSchedulingPriority=50 LimitNOFILE=65536 LimitNPROC=32768 \# Привязка к конкретным ядрам CPU (опционально) CPUAffinity=0-3 \# Оптимизация памяти MemoryMax=8G MemoryHigh=6G [Install] WantedBy=multi-user.target
3. Перезагрузите конфигурацию:
sudo systemctl daemon-reload sudo systemctl restart minecraft-bedrock
Привязка к ядрам CPU
1. Определите количество ядер:
lscpu | grep "CPU(s)"
2. Пример привязки к первым 4 ядрам:
CPUAffinity=0 1 2 3
3. Пример привязки к четным ядрам:
CPUAffinity=0 2 4 6
8. Оптимизация памяти
Настройка виртуальной памяти
1. Настройте swap:
sudo nano /etc/fstab
2. Добавьте swap файл (если нужно):
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
3. Добавьте в fstab:
/swapfile none swap sw 0 0
4. Настройте swappiness:
sudo sysctl -w vm.swappiness=10 \# Меньшее значение = меньше использование swap
Мониторинг памяти
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/bedrock-memory-monitor.sh
2. Добавьте содержимое:
\#!/bin/bash
PID=$(pgrep bedrock_server)
if [ -z "$PID" ]; then
exit 0
fi
MEMORY_MB=$(ps -o pid,rss,comm -p $PID | tail -1 | awk '{print $2/1024}')
MEMORY_GB=$(echo "scale=2; $MEMORY_MB/1024" | bc)
echo "Bedrock Server Memory: ${MEMORY_GB}GB"
\# Предупреждение при использовании > 6GB
if (( $(echo "$MEMORY_MB > 6144" | bc -l) )); then
echo "WARNING: High memory usage!" | logger -t bedrock-monitor
fi
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-memory-monitor.sh
9. Оптимизация сетевой задержки
Настройка приоритета сети
1. Используйте tc для приоритизации трафика:
sudo apt install -y iproute2
2. Создайте скрипт оптимизации:
sudo nano /usr/local/bin/bedrock-network-qos.sh
3. Добавьте содержимое:
\#!/bin/bash
INTERFACE=$(ip route | grep default | awk '{print $5}' | head -1)
\# Очистка старых правил
sudo tc qdisc del dev $INTERFACE root 2>/dev/null
\# Создание новой очереди
sudo tc qdisc add dev $INTERFACE root handle 1: htb default 30
\# Создание класса для Bedrock (высокий приоритет)
sudo tc class add dev $INTERFACE parent 1: classid 1:10 htb rate 1000mbit ceil 1000mbit prio 1
\# Фильтр для порта Bedrock
sudo tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dport 19132 0xffff flowid 1:10
sudo tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip sport 19132 0xffff flowid 1:10
4. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-network-qos.sh sudo /usr/local/bin/bedrock-network-qos.sh
10. Оптимизация дискового I/O
Настройка кэширования
1. Увеличьте размер кэша страниц:
sudo sysctl -w vm.page-cluster=3
2. Настройте dirty pages:
sudo sysctl -w vm.dirty_ratio=15 sudo sysctl -w vm.dirty_background_ratio=5
Оптимизация для SSD
1. Отключите индексирование для директории Bedrock:
sudo chattr +i /opt/bedrock/worlds/
2. Используйте noatime в fstab:
/dev/sda1 /opt ext4 defaults,noatime,nodiratime 0 2
11. Оптимизация конфигурации мира
Уменьшение активности сущностей
1. Регулярно очищайте неиспользуемые сущности через консоль:
screen -r minecraft-bedrock \# В консоли сервера
2. Настройте автоматическую выгрузку миров:
server-world-unload-after-wait=30 \# В server.properties
Оптимизация генерации чанков
1. Предзагрузите нужные чанки:
\# Используйте команды для предзагрузки важных областей \# Это уменьшит лаги при первом посещении
12. Мониторинг производительности
Создание скрипта мониторинга
1. Создайте скрипт:
sudo nano /usr/local/bin/bedrock-performance-monitor.sh
2. Добавьте содержимое:
\#!/bin/bash
LOG_FILE="/var/log/bedrock-performance.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
PID=$(pgrep bedrock_server)
if [ -z "$PID" ]; then
echo "[$DATE] Bedrock server is not running" >> $LOG_FILE
exit 1
fi
\# CPU использование
CPU=$(ps -p $PID -o %cpu | tail -1 | tr -d ' ')
\# Память использование
MEMORY_MB=$(ps -o pid,rss -p $PID | tail -1 | awk '{print $2/1024}')
MEMORY_GB=$(echo "scale=2; $MEMORY_MB/1024" | bc)
\# Сетевая активность
NET_IN=$(cat /proc/net/sockstat | grep TCP_INUSE | awk '{print $3}')
NET_OUT=$(cat /proc/net/sockstat | grep TCP_MEM | awk '{print $3}')
\# Запись в лог
echo "[$DATE] CPU: ${CPU}%, Memory: ${MEMORY_GB}GB, Network IN: $NET_IN, Network OUT: $NET_OUT" >> $LOG_FILE
\# Предупреждения
if (( $(echo "$CPU > 80" | bc -l) )); then
echo "[$DATE] WARNING: High CPU usage: ${CPU}%" >> $LOG_FILE
fi
if (( $(echo "$MEMORY_MB > 6144" | bc -l) )); then
echo "[$DATE] WARNING: High memory usage: ${MEMORY_GB}GB" >> $LOG_FILE
fi
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-performance-monitor.sh
4. Добавьте в crontab:
sudo crontab -e
5. Добавьте задачу:
\# Мониторинг каждые 5 минут */5 * * * * /usr/local/bin/bedrock-performance-monitor.sh
13. Тестирование производительности
Бенчмарк перед оптимизацией
1. Измерьте базовые показатели:
timeout 60 top -b -n 60 -p $(pgrep bedrock_server) > /tmp/before-optimization.txt
2. Проверьте FPS тики (через консоль сервера):
screen -r minecraft-bedrock \# Наблюдайте за TPS в логах
Бенчмарк после оптимизации
1. Измерьте улучшенные показатели:
timeout 60 top -b -n 60 -p $(pgrep bedrock_server) > /tmp/after-optimization.txt
2. Сравните результаты:
diff /tmp/before-optimization.txt /tmp/after-optimization.txt
14. Рекомендации по оборудованию
Минимальные требования
- CPU: 2 ядра, 2.0 GHz
- RAM: 4GB (2GB для системы, 2GB для сервера)
- Диск: 10GB свободного места (SSD рекомендуется)
- Сеть: 10 Mbps для 10 игроков
Рекомендуемые требования
- CPU: 4 ядра, 3.0 GHz
- RAM: 8GB (2GB для системы, 6GB для сервера)
- Диск: 50GB свободного места (SSD обязательно)
- Сеть: 100 Mbps для 50 игроков
Для высоконагруженных серверов
- CPU: 8+ ядер, 3.5 GHz
- RAM: 16GB+ (4GB для системы, 12GB+ для сервера)
- Диск: 100GB+ свободного места (NVMe SSD)
- Сеть: 1 Gbps для 100+ игроков
15. Устранение неполадок
Высокое использование CPU
1. Проверьте процессы:
top -p $(pgrep bedrock_server)
2. Уменьшите настройки:
- `view-distance` → уменьшите до 24
- `tick-distance` → уменьшите до 4
- `max-threads` → установите в 2-4
Высокое использование памяти
1. Проверьте использование:
ps aux | grep bedrock_server
2. Оптимизируйте:
- Уменьшите `view-distance`
- Уменьшите количество игроков
- Регулярно перезагружайте сервер
Сетевые задержки
1. Проверьте пинг:
ping -c 10 <server-ip>
2. Оптимизируйте:
- Проверьте настройки TCP/UDP
- Увеличьте сетевые буферы
- Используйте QoS для приоритизации
Заключение
Оптимизация производительности Bedrock сервера включает настройку конфигурационных файлов, операционной системы, сетевых параметров и мониторинг ресурсов. Правильная оптимизация значительно улучшит производительность и стабильность сервера.
Для размещения ваших оптимизированных Bedrock серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных Bedrock серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних серверов
Наши специалисты помогут с оптимизацией Bedrock серверов и настройкой производительности!