Factorio Руководство

Низкий UPS на сервере Factorio: как найти причину тормозов

Отличите низкий FPS от медленной симуляции и catch-up. Найдите ограничение сервера или клиента до смены VPS.

Низкий UPS на сервере Factorio: как найти причину тормозов

Если вся фабрика работает медленно, сначала выясните, не справляется сервер или компьютер одного из игроков. Более мощный VPS поможет только в первом случае и только при подходящем характере нагрузки. Низкий FPS и долгая загрузка карты требуют других проверок.

Разбор рассчитан на существующий headless-сервер Factorio 2.x на Ubuntu 24.04 и PC-клиенты с совпадающими версиями. Команды используют схему из инструкции по установке: служба factorio, бинарник /opt/factorio/bin/x64/factorio, рабочие данные /srv/factorio. Подставьте реальные пути из своей службы. Исходную фабрику во время диагностики не меняйте.

Определите, что именно тормозит#

Попросите двух игроков описать один и тот же момент: фабрика движется медленно, картинка дёргается или кто-то застрял на Catching up? Отметьте, когда появилась проблема: после расширения производства, изменения модов, переноса сервера или обновления клиента.

НаблюдениеЧто сравнить сначала
Низкий FPS у одного игрока, симуляция идёт нормальноГрафическую нагрузку и настройки этого клиента
У всех медленные производство и движениеСимуляцию на сервере и загрузку хоста
Один игрок постоянно догоняет сервер или отстаётПроизводительность его ПК на этой же фабрике
Действия запаздывают при нормальном темпе симуляцииСетевую статистику, потери и маршрут
Короткие зависания вместо постоянного замедленияПики времени, сохранения и параллельные задачи

Официальное руководство по производительности разделяет отрисовку кадров и обновление мира. Headless-сервер не рисует экран игрока. Снижение графических настроек способно облегчить работу клиента, но не уменьшает серверную нагрузку от расчёта фабрики.

Сначала определите, какой компьютер ограничен. Отставание клиента и медленная работа сервера могут выглядеть для игроков похоже.

Зафиксируйте воспроизводимый момент#

На подключённом клиенте откройте F4 и включите show-fps, show-time-usage, show-multiplayer-statistics. Эти параметры описаны в справочнике отладки. Если параметры выбраны на вкладке Debug, включите выбранные показатели клавишей F5. Снимите показатели во время обычной игры и при возникновении проблемы. Скриншот спокойной фабрики после остановки стройки может не показать причину пика.

Время расчётов на компьютере игрока относится к этому компьютеру. Нельзя подписывать его как непосредственный замер CPU сервера. Сопоставьте показатели с другим клиентом и наблюдениями на хосте за тот же период. Включать все отладочные слои подряд тоже не нужно: лишние измерения и нечитаемые числа мешают сравнению.

При нормальном целевом темпе 60 обновлений в секунду на обновление приходится около 16,67 мс. Это бюджет времени, а не универсальная норма для каждой отдельной подсистемы. При постоянном замедлении ищите устойчивые затраты; при зависаниях сохраняйте пики и действие, которое их вызвало.

Запишите полную версию игры и версии включённых модов. Сравнение разных сборок, startup-настроек или конфигураций дополнения не является сравнением оборудования.

Проверьте хост в момент проблемы#

На сервере выполните проверки, не меняющие фабрику:

bash
sudo systemctl show factorio -p MainPID -p ExecStart
/opt/factorio/bin/x64/factorio --version
sudo journalctl -u factorio -n 100 --no-pager
free -h
vmstat 1 10
df -h /srv/factorio

Найдите полученный PID в top. Если служба запускает другой бинарник, проверьте именно его версию. Сопоставьте замедление с резервным копированием, сжатием архивов, другими игровыми экземплярами и конкуренцией за CPU на стороне провайдера. Смотрите несколько замеров: первый отчёт vmstat отражает более длительный период, а не только последнюю секунду.

Нехватка памяти, активный swap и ошибки хранения требуют действий. Но наличие свободной RAM не означает, что дополнительная память ускорит симуляцию. Средняя загрузка CPU по множеству виртуальных ядер тоже способна скрыть ограничение части расчётов. Сохраняйте показатели ОС вместе с игровыми измерениями, а не выбирайте VPS только по числу ядер.

Не запускайте второй экземпляр для бенчмарка на уже загруженном продакшен-хосте. Иначе вы сами добавите конкурирующую нагрузку. Выделите окно обслуживания или отдельную тестовую машину с записанными характеристиками.

Разберите отставание клиента отдельно#

При подключении клиент получает состояние фабрики и должен догнать работающую симуляцию. Быстрая загрузка уменьшает начальный разрыв, но не заставляет ПК бесконечно рассчитывать мир быстрее своих возможностей. Передайте затронутому игроку приватную копию того же сохранения с совпадающим окружением. Если фабрика тормозит у него и локально, изменение firewall сервера или лимита отдачи не исправит вычислительное ограничение.

Если локальная симуляция работает нормально, а подключение нет, сохраните журналы обеих сторон и перейдите к диагностике соединения. Сначала сравните сетевые условия. Временная пауза по согласованию с участниками поможет отделить накопившееся отставание при входе от постоянного ограничения; успешный вход после паузы ещё не доказывает, что клиент удержит темп дальше.

Сравнивайте одно изменение за раз#

Сохраните датированную копию мира, точный бинарник, ZIP-архивы модов и настройки. На изолированной установке --benchmark позволяет рассчитывать сохранение заданное число тиков с повторными прогонами. Сверьтесь с --help установленной сборки и справочником команд. Укажите отдельные config и mod directory, чтобы тест не использовал рабочие данные продакшена. Перед сравнением запишите команду, сборку, оборудование и исходный набор файлов.

Бенчмарк измеряет конкретную симуляционную нагрузку. Он не измеряет графику игрока, интернет-маршрут и успешное подключение. Сравнение теряет смысл, если одновременно уменьшить фабрику, убрать крупные моды и заменить оборудование.

Выбирайте изменение по профилю нагрузки: исследуйте дорогой мод или подсистему, сохраняя оригинал и меняя только тестовую копию. Не удаляйте моды и не перестраивайте логистику живой фабрики по совету из старой темы. Описание оптимизаций Factorio 2.0 показывает, что стоимость подсистем и распределение работы по потокам меняются между версиями. Исторический совет стоит сначала проверить.

Если у вас несколько поддерживаемых игровых экземпляров, панель и агент Nexardo для своей Linux-инфраструктуры помогут собрать управление в одном месте. Управление экземпляром не заменяет профилирование фабрики и не означает автоматического подключения установленной вручную службы.

Принимайте изменение, когда на той же фабрике есть улучшение в сопоставимых условиях, а игроки могут войти, поиграть, сохранить мир и переподключиться. Результат «улучшения нет» тоже сохраните: он поможет не покупать ресурсы, которые не устраняют найденное ограничение.