Оптимизация сервера Rust без опасных настроек
Оптимизация Rust начинается с измерений. Случайный набор convar из старого руководства может ухудшить физику, сохранения или игровой баланс, не устранив причину задержек.
Сначала зафиксируйте время проблемы, онлайн, стадию вайпа, последние изменения плагинов и сообщения консоли. Затем меняйте только один фактор и сравнивайте результат в одинаковых условиях.
RAM и производительность одного ядра#
Rust хранит мир и большое число сущностей в памяти, поэтому потребление RAM растет с размером карты, онлайном и длительностью вайпа. Когда памяти недостаточно, возможны интенсивное использование swap, аварийное завершение процесса или перезапуск со стороны системы.
Свободная RAM не гарантирует отсутствие лагов. Основная игровая работа Rust во многих ситуациях ограничена производительностью одного потока CPU. Дополнительные vCPU помогают фоновым задачам, сети и отдельным подсистемам, но не превращают медленный главный поток в быстрый.
При выборе тарифа Rust BazaHost учитывайте состояние сервера ближе к концу вайпа, а не только пустую карту после запуска.
Размер карты и число сущностей#
Большая карта требует больше памяти, дольше запускается и создает больше пространства для построек и объектов. Выбирайте размер по реальному онлайну и набору монументов, а не с запасом. Изменение размера или seed выполняйте перед map wipe, как описано в настройке карты.
Стены, фундаменты, контейнеры, транспорт, NPC и размещаемые предметы являются сущностями. Их число обычно растет в течение вайпа. Не существует универсального безопасного лимита: стоимость сущности зависит от ее типа, активности, плагинов и действий игроков.
Decay удаляет заброшенные постройки и сдерживает рост мира. Не отключайте его только ради удобства игроков. Изменение decay.scale и параметров upkeep влияет на баланс и экономику, поэтому сначала создайте резервную копию, изучите описание convar через find decay и протестируйте настройку отдельно.
Не удаляйте сущности массовой командой на рабочем мире. Ошибка фильтра может уничтожить постройки или важные объекты без возможности отмены.
Плагины Carbon#
Нагрузка зависит не от количества файлов .cs, а от поведения плагинов. Особенно внимательно проверяйте плагины, которые:
- часто обходят игроков или сущности;
- реагируют на каждое повреждение, строительство или перемещение;
- выполняют синхронные операции с файлами или внешними сервисами;
- постоянно пишут одинаковые ошибки в консоль;
- создают NPC, транспорт или дополнительные объекты.
Устанавливайте плагины по одному из каталога BazaHost и наблюдайте сервер после каждого изменения. Обновление может изменить нагрузку даже при прежней конфигурации.
Для поиска виновника сделайте копию конфигураций, выберите непиковое время и временно отключайте по одному недавно добавленному плагину. Не удаляйте сразу carbon/data: там могут находиться пользовательские данные и экономика.
Интервал сохранения#
Короткий интервал автосохранения уменьшает объем прогресса, который может быть потерян при сбое, но чаще создает нагрузку на CPU и диск. Длинный интервал снижает частоту сохранений, но увеличивает потенциальную потерю изменений мира.
Подбирайте интервал по длительности фактического сохранения и допустимому риску. Не увеличивайте его только для скрытия зависаний во время server.save. Перед плановым рестартом выполняйте сохранение и дожидайтесь его завершения. Настройка интервала доступна в панели и описана в статье «Настройка сервера и карты».
Безопасная диагностика#
Откройте «Настройки игры», скопируйте RCON-порт и пароль и подключитесь внешним Source RCON-клиентом, например mcrcon. Начните с команд, доступных на конкретной версии сервера:
status
find serverinfo
find fps
find profile
status показывает подключенных игроков и помогает сопоставить проблему с онлайном, но сам по себе не профилирует производительность. Выполняйте serverinfo только если сервер нашел эту команду и показал ее назначение. Наблюдайте динамику показателей, а не делайте вывод по одному замеру.
Для периодического сбора безопасных показателей можно использовать действие «RCON-команда (Rust)» в планировщике. Не запускайте тяжёлое профилирование по частому расписанию.
В Carbon есть встроенный Mono Profiler для анализа плагинов, модулей и игровых сборок. Актуальный список его команд следует искать через find c.profile и официальный справочник Carbon. Профилирование, особенно замер времени вызовов, само создает нагрузку. Запускайте короткий сбор в период воспроизводимой проблемы, не оставляйте его включенным постоянно и сохраняйте результат для разработчика плагина.
Порядок устранения лагов#
- Создайте резервную копию мира, конфигураций и данных Carbon.
- Проверьте консоль на повторяющиеся ошибки и нехватку памяти.
- Сопоставьте просадку с онлайном, сохранением, событием или недавним обновлением.
- Оцените размер карты и рост числа сущностей за одинаковые интервалы.
- Отключите один подозрительный плагин и повторите измерение.
- Если проблема появилась после изменения конфигурации, верните только это изменение.
- Если причина не найдена, передайте поддержке время инцидента, логи, список изменений и профиль, а не только сообщение «сервер лагает».
Не проводите вайп как первый диагностический шаг. Пустой мир может временно скрыть перегрузку плагина или недостаток CPU, а данные игроков будут потеряны.
Хостинг Rust на BazaHost: NVMe, Ryzen 9 и защита от DDoS. Тарифы от 1790 ₽/мес.