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

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

Текущая версия на 09:54, 3 ноября 2025

Содержание

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

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