FiveM: лаги при большом онлайне на сервере
Сервер летал на 20 игроках и начал тупить на 60? Знакомая история почти для каждого RP-проекта, который вырос из друзей-тестировщиков в живое комьюнити. Проблема в том, что причин у этого может быть штук пять сразу — от кривого скрипта фреймворка до банально слабого по частоте процессора — и лечить их нужно по-разному. Разберём, куда смотреть по порядку, чтобы не гадать вслепую.
Содержание
Сначала — диагностика, а не догадки
Прежде чем что-то менять в конфиге, нужно понять, где именно теряется производительность: в самом FXServer, в конкретном ресурсе или в сети между игроками и сервером. Смешивать эти три вещи — самая частая ошибка, из-за которой люди месяцами гоняются не за той причиной.
Базовый инструмент — встроенная клиентская команда resmon 1 (открывается по ~/F8, подключившись к серверу). Она показывает нагрузку по каждому ресурсу отдельно: CPU-время в миллисекундах и потребление памяти. Если один-два ресурса стабильно занимают львиную долю списка — вот и подозреваемый, дальше не нужно гадать по всему серверу.
Второй источник данных — вкладка Resource Monitor в txAdmin: она агрегирует нагрузку по ресурсам прямо со стороны сервера, без привязки к конкретному клиенту, и полезна, когда нужно смотреть картину не глазами одного игрока, а в целом. Там же на вкладке производительности видно общую загрузку основного потока сервера — это то число, которое многие по привычке называют «тикрейтом FXServer», хотя технически это не совсем тот тикрейт, что в шутерах (ниже разберём почему это важно понимать правильно).
Если хочется копнуть глубже — в FXServer есть встроенный профайлер, запускается прямо из консоли сервера:
profiler record 30 profile.json
Команда пишет детальный профиль выполнения скриптов за 30 секунд в файл, который потом можно разобрать через инструменты профилирования Cfx — это уже уровень «нашли виновный ресурс, но непонятно, какая именно функция внутри жрёт CPU».
Отдельно проверьте нагрузку на самой VPS через htop по SSH, пока сервер под живым онлайном: если CPU упирается в потолок на одном ядре, а остальные простаивают — это прямое подтверждение, что дело не в сети и не в диске, а именно в вычислительной части.
Что на самом деле называют «тикрейтом» в FXServer
Важная оговорка, которая многих сбивает с толку: FXServer устроен иначе, чем Source-движок в CS2 или подобных играх, где tickrate — это явный, свободно настраиваемый параметр запуска. У FXServer нет единого универсального конвара уровня «поставил число — получил тикрейт», который одинаково работал бы во всех билдах и версиях — это то, что реально отличается от сборки к сборке, поэтому не доверяйте статьям (включая эту), где называется конкретная цифра как истина в последней инстанции — сверяйтесь с changelog своей версии артефактов на fivem.net/builds.
То, что реально происходит: основной поток сервера (game/sync-тик) считает мир последовательно — позиции сущностей, синхронизацию через OneSync, обработку ивентов ресурсов — и делает это настолько часто, насколько успевает при текущей нагрузке. В txAdmin это отражается как общая частота обработки основного потока на графике производительности. Когда онлайн растёт, а частота этого потока проседает — вы физически видите те же симптомы, что и «низкий тикрейт» в шутерах: игроки телепортируются, взаимодействия с объектами подвисают, синхронизация машин и NPC рассинхронизируется.
Вывод простой: не гоняйтесь за мифическим «правильным значением sv_tickrate», которое где-то прописать. Гоняйтесь за тем, что реально нагружает этот основной поток — а это почти всегда OneSync-синхронизация и тяжёлые ресурсы, разберём оба пункта дальше.
Поднять сервер FiveM (GTA V) за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверOneSync и onesync_population: цена синхронизации большого онлайна
OneSync — это подсистема, без которой сервер физически не может держать больше 32 игроков (стандартный лимит легаси-режима синхронизации). Включается в server.cfg:
onesync on
sv_maxclients 64
Именно OneSync берёт на себя синхронизацию состояния мира между десятками и сотнями клиентов одновременно — сущности, машины, NPC, физику подбираемых предметов. И чем больше игроков онлайн, тем больше объектов нужно синхронизировать каждый цикл, что напрямую нагружает тот самый основной поток из предыдущего раздела.
Отдельный конвар, который стоит проверить в первую очередь на RP-серверах с высоким онлайном — onesync_population:
onesync_population true
Он отвечает за синхронизацию окружающей популяции — фонового трафика, случайных пешеходов, которых генерирует сам движок GTA V вне зависимости от скриптов вашего фреймворка. На 20-30 игроках эта нагрузка почти незаметна, но на 80-128 синхронизация ambient-population по всей карте одновременно для всех клиентов может ощутимо давить на сервер, особенно если у вас и так плотный RP-скрипт поверх. Многие крупные RP-проекты сознательно отключают или ограничивают этот трафик через собственные скрипты управления плотностью (например, снижая SetPedDensityMultiplierThisFrame и аналогичные клиентские нативные функции по зонам), оставляя серверу OneSync только то, что реально важно для геймплея — игроков, их машины, взаимодействия.
Что касается лимитов выше 48-64 игроков (режимы, которые в старых билдах FXServer требовали отдельных флагов вроде onesync_enableInfinity/onesync_enableBeyond) — в актуальных на конец 2026 года сборках эта логика периодически меняется, так что для серверов на 100+ слотов обязательно свериться с текущей документацией и changelog вашего билда, а не копировать конфиг из статьи трёхлетней давности.
Тяжёлые ресурсы: где обычно теряется CPU-время
Если resmon показывает, что 60-70% нагрузки съедает не движок, а конкретные ресурсы — это почти всегда один из трёх паттернов:
- Бесконечный луп без нормального
Citizen.Wait()— ресурс, написанный наCitizen.Wait(0)там, где логике достаточно проверяться раз в секунду, съедает CPU-время на каждый(!) тик впустую. Это топ-1 причина деградации на фреймворках ESX и QBCore, особенно после установки стороннего скрипта без ревью кода. - Синхронные запросы к базе на каждое действие игрока — если каждый клик по инвентарю или гаражу дёргает MySQL синхронно, на 20 игроках это незаметно, на 80 одновременных запросах превращается в очередь и подвисания. Решение — асинхронные обёртки (
oxmysqlили аналоги) и кэширование часто читаемых данных вместо запроса к базе на каждое обращение. - Тяжёлые серверные ивенты, дублирующие работу для каждого игрока отдельно, вместо того чтобы посчитать один раз и разослать всем. Частая находка в самописных экономических и inventory-системах, которые росли инкрементально без рефакторинга.
Если у вас ESX или QBCore — прежде чем чинить свои кастомные скрипты, стоит понимать разницу в архитектуре самих фреймворков: у них разный подход к событиям и структуре данных, и то, что оптимально в одном, может быть узким местом в другом. Разбор отличий есть в статье ESX и QBCore: сравнение фреймворков. А если проблема всплыла именно после установки нового мода — процесс безопасной установки и проверки кастомных скриптов на нагрузку разобран в статье установка кастомных скриптов на FiveM.
Однопоточность: почему решает частота CPU, а не число ядер
Ключевая архитектурная особенность FXServer, которую стоит понять раз и навсегда: основная игровая логика и синхронизация через OneSync выполняются на одном главном потоке. Часть служебных задач (сеть, HTTP, некоторые фоновые операции) может уходить в отдельные потоки, но сама симуляция мира и синхронизация сущностей — последовательная работа, которая физически не размазывается по 8 или 16 ядрам, как бы ни хотелось.
Практический вывод: тариф хостинга с формально впечатляющим числом vCPU не спасёт от лагов при высоком онлайне, если частота этих ядер невысокая. Сервер с 4 сильными по частоте ядрами почти всегда обгонит по стабильности сервер с 16 ядрами низкой частоты — ровно та же логика, что и у большинства однопоточных игровых движков (то же самое, кстати, справедливо для CS2 на Source 2, если вам интересно сравнение подхода в другом жанре).
На что смотреть при выборе или апгрейде тарифа:
| Параметр | Влияние на онлайн 50-128 игроков |
|---|---|
| Частота ядра (single-core performance) | Критично — основной потолок для стабильности тика |
| Число vCPU | Второстепенно — помогает только служебным задачам, не главному тику |
| Тип виртуализации (выделенные vs переподписанные ядра) | Критично — на oversold-нодах ваш процесс не гарантированно получает CPU-время вовремя |
| RAM | Важно, но обычно не первопричина именно лагов при росте онлайна — скорее падений и утечек |
| Диск (SSD/NVMe) | Важно для баз данных фреймворка и стриминга карт/MLO, менее критично для самого тика |
Если после чистки скриптов и настройки OneSync проблема осталась — вероятно, дело именно в CPU, и тут поможет либо более производительный по частоте тариф, либо выделенное ядро без соседей.
Практический чек-лист оптимизации по шагам
Если коротко резюмировать порядок действий при жалобах на лаги с ростом онлайна:
- Снимите
resmon 1на пике онлайна и зафиксируйте топ-5 ресурсов по нагрузке. - Проверьте
onesync_population— на плотных RP-серверах часто есть смысл ограничить фоновую популяцию через кастомные скрипты плотности. - Пройдитесь по топовым ресурсам на предмет
Citizen.Wait(0)-лупов и синхронных запросов к базе — это чинится без смены железа. - Посмотрите загрузку CPU через
htopво время пика — если упирается одно ядро в 100%, дальнейшая оптимизация скриптов даст меньше, чем апгрейд по частоте. - Если есть подозрение на конкретный тяжёлый мод — временно отключите его и сравните
resmonдо/после, это быстрее, чем гадать по логам. - Для системного контроля нагрузки на дистанции подключите постоянный мониторинг, а не разовые проверки руками — общий подход к отслеживанию TPS/лагов на игровых серверах (применимо и к FiveM с поправкой на терминологию) разобран в статье мониторинг TPS и лагов на сервере.
Поднять сервер FiveM (GTA V) за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сколько игроков вообще может держать FiveM-сервер?
Технически OneSync позволяет масштабировать далеко за 128, но реальный практический потолок без деградации сильно зависит от нагрузки ваших ресурсов и мощности CPU — универсального числа нет, проверяйте на своей конфигурации.
Поможет ли увеличение RAM от лагов при росте онлайна?
Обычно нет, если симптомы именно про тики/синхронизацию (телепорты, подвисания взаимодействий). Нехватка RAM чаще проявляется падениями и утечками памяти, а не именно просадкой тика — это разные проблемы с разным лечением.
Стоит ли сразу отключать OneSync, если сервер лагает?
Нет — без OneSync вы физически ограничены 32 игроками легаси-режима, это не решение, а откат назад. Разбирайтесь с нагрузкой внутри OneSync (population, тяжёлые ресурсы), а не отключайте саму подсистему.
Можно ли доверять готовым «оптимизированным» конфигам server.cfg из интернета?
Как отправную точку — да, но слепо копировать чужой конфиг с чужими значениями под свою нагрузку не стоит: у вас другой набор ресурсов, другой онлайн и, возможно, другая версия FXServer. Проверяйте каждое изменение через resmon и графики txAdmin, а не по факту «в статье сказали, что так лучше».
Виноват ли всегда фреймворк (ESX/QBCore) в просадках при большом онлайне?
Не всегда — сами фреймворки в актуальных версиях достаточно оптимизированы. Чаще проблема в сторонних скриптах и модах, установленных поверх них без ревью, которые и создают основную нагрузку.