Оптимизация Garry's Mod сервера: устранение лагов и тормозов
Полная оптимизация сервера Garry's Mod в 2026: диагностика лагов через net_graph и profiler, tickrate, sv_maxrate, лимиты props, Lua-оптимизация.
Кратко: Лаги в Garry’s Mod в 2026 году в 90% случаев вызваны одной из четырёх причин: перегрузом CPU тяжёлыми Lua-хуками, переполнением RAM, превышением лимита props/ragdolls или слабым каналом. Быстрая диагностика - команды
net_graph 3,statusиlua_dumpgcdataв консоли сервера; решение - комбинация ограничения лимитов, чистки аддонов и корректного tickrate.
Оптимизация Garry’s Mod сервера - это не одна магическая команда, а системная работа над четырьмя слоями: сеть, CPU, RAM и Lua. В этом гайде - полная методика диагностики через профилировщики Source Engine, конкретные значения ConVar для разных нагрузок и чек-лист на 32+ игроков с цифрами, проверенными на проде в 2026 году.
Что вызывает лаги в Garry’s Mod?
Лаги в GMod делятся на пять категорий, и для каждой - своя диагностика и лечение. Универсального “сделать быстро” не существует - сначала надо найти узкое место.
| Тип лага | Симптом | Команда диагностики |
|---|---|---|
| Сетевой | Высокий ping, скачки choke/loss | net_graph 3, ping |
| CPU | Низкий tickrate сервера (FPS < tickrate) | stats, host_thread_mode |
| RAM | Stutter каждые 30-60 сек, рост swap | top -p $(pgrep srcds) |
| Lua | Резкие фризы при действиях игроков | lua_dumpgcdata, gmsv_profiler |
| Физика | Лаги при большом количестве props | sv_cheats 1; r_drawphysmodels 1 |
Самая частая причина в публичных DarkRP/MilitaryRP - комбо Lua + физика: 30 игроков спавнят по 5-10 props каждый, плюс серверный Lua-код с неоптимизированными хуками Think. Сервер CPU-bound, tickrate падает с 33 до 12-15, и все игроки чувствуют тормоза.
Как диагностировать лаги через net_graph?
net_graph 3 в клиентской консоли показывает шесть критичных метрик в реальном времени:
- fps - частота кадров клиента (для диагностики лагов не важна).
- ping - задержка до сервера в мс. Норма: <50 для своей страны, <120 для соседней.
- lerp - интерполяция, по умолчанию 100 мс. Если красный - игрок слишком сильно интерполирует.
- in/out - входящий/исходящий трафик клиента. Норма: 5-15 КБ/с входящий.
- choke - количество пакетов, отброшенных сервером из-за нехватки канала.
- loss - потерянные пакетов в %.
Если у всех игроков одновременно растут choke и loss - сервер не справляется с сетью, нужно понижать sv_maxrate или tickrate. Если у одного игрока - проблема на его стороне.
Как узнать tickrate сервера?
В серверной консоли команда stats выводит текущий FPS сервера. Если значение FPS < tickrate (например 12 при tickrate 33) - сервер CPU-bound и фактически работает на меньшей частоте, чем заявлено. Это и есть главная причина “резинового” движения игроков.
$ stats
CPU In_(KB/s) Out_(KB/s) Uptime Maps FPS Players
12.34 45.67 89.01 1234 5 30.05 24
Если FPS постоянно держится ниже tickrate - оптимизируем CPU. Если ровно равен tickrate (33.00, 66.00) - сервер не перегружен, ищем проблему в другом месте.
Как настроить tickrate Garry’s Mod?
Tickrate задаётся флагом запуска -tickrate в командной строке srcds:
./srcds_run -game garrysmod -tickrate 66 +map gm_construct +maxplayers 32
Рекомендации по режимам:
| Режим | Tickrate | Причина |
|---|---|---|
| Sandbox | 33 | Стандарт, физика и так дорогая |
| DarkRP | 33 | Не PvP-фокус, экономия CPU |
| TTT | 66 | Нужна точная регистрация хитов |
| Murder | 66 | Динамические PvP-стычки |
| Prop Hunt | 33 | Достаточно для геймплея |
| MilitaryRP | 66 | Стрелковые перестрелки |
| Deathrun | 66 | Прыжковая механика |
Tickrate 100+ не имеет практического смысла в GMod: движок Source устаревший, и прирост ощущений минимален, зато CPU-нагрузка растёт квадратично.
Pterohost - игровой хостинг с DDoS-защитой L4+L7, NVMe SSD и круглосуточной поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать сервер Garry’s Mod
Как настроить sv_maxrate и sv_maxupdaterate?
sv_maxrate ограничивает скорость передачи данных каждому клиенту в байтах/сек, sv_maxupdaterate - частоту апдейтов. Оба параметра попадают в server.cfg:
// Максимум 1 МБ/с на клиента (рекомендуется для tickrate 66)
sv_maxrate 1048576
sv_minrate 65535
// Частота апдейтов клиенту = tickrate
sv_maxupdaterate 66
sv_minupdaterate 20
// Снапшоты от клиента к серверу
sv_maxcmdrate 66
sv_mincmdrate 30
Для tickrate 33 значения sv_maxupdaterate/sv_maxcmdrate - 33. Для tickrate 66 - 66. Превышать tickrate не имеет смысла, недобор - снижает плавность для клиента.
Что делает gmod_mcore_test 1?
gmod_mcore_test 1 - это многопоточный режим Source Engine, в котором физика и сетевой стек распределяются по разным ядрам CPU. На современных процессорах (Ryzen 5 5600+, Intel Core i5-12400 и новее) включение даёт прирост FPS сервера на 15-30%, особенно при большом количестве props.
// В server.cfg
gmod_mcore_test 1
host_thread_mode 2
mat_queue_mode 2
На старых одноядерных VPS включение может вызвать stutter - тестировать под нагрузкой. Если после gmod_mcore_test 1 появились случайные краши - откатить в 0.
Какие лимиты props и ragdolls выставить?
Sandbox-лимиты задаются ConVar в server.cfg. Дефолтные значения избыточны для публичных серверов и часто становятся причиной лагов:
// Лимиты на одного игрока
sbox_maxprops 50 // дефолт 150, для оптимизации 30-50
sbox_maxragdolls 5 // дефолт 10
sbox_maxvehicles 4 // дефолт 8
sbox_maxballoons 0 // полностью запретить, дорогая физика
sbox_maxeffects 10 // дефолт 50
sbox_maxdynamite 5 // взрывчатка дорогая
sbox_maxlamps 4 // лампы дорого рендерят свет
sbox_maxlights 10 // дайнамические источники света
sbox_maxbuttons 5 // дефолт 20
sbox_maxsents 10 // entity общего назначения
sbox_maxnpcs 3 // дефолт 10, NPC жрут много AI-CPU
sbox_maxwheels 8 // колёса для машин
sbox_maxthrusters 8 // двигатели
sbox_maxhoverballs 4 // антигравитационные шары
sbox_maxemitters 4 // эмиттеры частиц
// Глобальные ограничения
sbox_godmode 0 // отключить godmode для не-админов
sbox_noclip 0 // отключить noclip
Для DarkRP-серверов лимиты обычно ниже и контролируются через DarkRP-настройки в darkrp_config/. Не задавайте sbox_maxprops больше 100 на публичном сервере с 32+ слотами - это гарантированный путь к лагам.
Как оптимизировать Lua-код в аддонах?
90% производительности GMod-сервера зависит от качества Lua-кода в аддонах. Основные правила оптимизации:
- Кэшировать ссылки на функции:
local table_insert = table.insertв начале файла - вызов в 2-3 раза быстрее, чемtable.insert. - Избегать хук Think с тяжёлой логикой: Think вызывается каждый тик. Если код в нём не успевает за 1/tickrate секунды - сервер лагает.
- Использовать Timer вместо Think: для проверок раз в секунду
timer.Create("MyCheck", 1, 0, function() ... end)дешевле, чем Think. - Удалять ненужные хуки:
hook.Remove("Think", "MyAddon_Think")после использования. - Не вызывать SQLite-запросы в хуках: батчинг и кэширование.
- Заменять for k, v in pairs() на for i = 1, #t: ipairs/pairs медленнее обычного for на 30-40%.
Найти тяжёлые хуки помогает gmsv_profiler (Workshop ID: 110162148):
profiler_start
profiler_stop
profiler_print
Вывод покажет топ-10 самых дорогих хуков с временем выполнения в миллисекундах. Хуки, которые тратят больше 1-2 мс - подозрительные.
Как удалить тяжёлые аддоны?
Не каждый Workshop-аддон оптимизирован. Известные “тяжёлые” категории:
- Реалистичные SWEPs (TFA Insurgency, Arctic’s Tactical Knife) - дорогой Think.
- Procedural-генерация (RT-камеры, экраны) - постоянный рендер.
- NPC-паки с поведением (M9K NPCs, NextBot Nextbots) - тяжёлый AI.
- Sandbox-инструменты с множеством эффектов (Wire Mod без оптимизации).
- Карты с большим num_brushes (rp_evocity_v2p > 60000 brushes).
Удаление аддона - переместить .gma из garrysmod/addons/ в garrysmod/addons_disabled/ и перезапустить сервер. Если после удаления FPS вырос с 15 до 30 - это и был виновник.
Детальная инструкция по удалению - в гайде по удалению контента Workshop.
Какие команды очистки помогают в реальном времени?
В чате с правами админа (через ULX или SAM):
!cleanup // удалить все props
!cleardecals // очистить декали (следы пуль)
!clearragdolls // удалить все ragdolls
!stopsound // остановить зацикленные звуки
gmod_admin_cleanup // встроенная команда GMod
Серверные ConVar для автоматической очистки:
// Автоматическое удаление ragdolls через 30 сек после смерти
g_ragdoll_fadespeed 600
g_ragdoll_lvfadespeed 100
// Лимит декалей на карте
r_decals 200
mp_decals 200
// Авто-удаление пропов без владельца через 5 минут
sbox_persist 0
Чек-лист оптимизации для 32+ игроков
Проверенная конфигурация для DarkRP/MilitaryRP сервера на 32-48 слотов:
Железо:
- CPU: 4+ ГГц per-core (Ryzen 7 5800X, Intel Core i7-13700K).
- RAM: 4-8 ГБ выделенных под srcds_linux.
- Диск: NVMe SSD, не HDD.
- Канал: 1 Гбит/с с защитой от DDoS L4+L7.
ConVar:
-tickrate 66(для PvP-режимов) или 33 (для RP).gmod_mcore_test 1.host_thread_mode 2.sbox_maxprops 50,sbox_maxragdolls 5.net_maxfilesize 64.sv_maxrate 1048576.
Аддоны:
- Не более 80-100 активных Workshop-аддонов.
- Регулярная проверка
gmsv_profilerраз в неделю. - FastDL для всего кастомного контента (см. настройка FastDL).
- Отключённые ненужные SWEPs/NPCs.
Lua:
- Кастомные аддоны проверены на хуки Think.
- Нет SQLite-запросов в Think.
- Хуки явно удаляются после использования.
Как поможет более мощное железо?
Если оптимизация не помогает - возможно, вы упёрлись в железо. Типичные конфигурации:
| Слоты | Режим | CPU | RAM | Диск |
|---|---|---|---|---|
| 16 | Sandbox/TTT | 3.5 ГГц | 2 ГБ | SSD 20 ГБ |
| 24 | DarkRP лайт | 4.0 ГГц | 3 ГБ | NVMe 30 ГБ |
| 32 | DarkRP | 4.5 ГГц | 4 ГБ | NVMe 50 ГБ |
| 48 | MilitaryRP | 5.0 ГГц | 6 ГБ | NVMe 80 ГБ |
| 64 | Зомби-моды | 5.0+ ГГц | 8 ГБ | NVMe 100 ГБ |
Понимание как работает CPU в игровых серверах даёт правильное представление о выборе тарифа.
Pterohost - игровой хостинг с DDoS-защитой L4+L7, NVMe SSD и круглосуточной поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать сервер Garry’s Mod
FAQ: оптимизация Garry’s Mod
Почему сервер лагает только в определённое время? Скорее всего это пиковый онлайн или DDoS. Проверьте stats в момент лага: если FPS < tickrate - перегруз CPU, если высокий choke/loss - сетевая атака. Pterohost фильтрует L4+L7 атаки автоматически.
Что делать, если лагает после обновления GMod? Иногда обновления движка ломают совместимость с аддонами. Решение - откатить аддоны до предыдущей версии или обновить их через Workshop. Иногда помогает удаление cfg/config.cfg и пересоздание.
Поможет ли отключение Source TV? Source TV (sv_lan 0, tv_enable 1) добавляет 5-15% нагрузки на CPU и трафик. Если HLTV-запись не нужна - отключите tv_enable 0 в server.cfg.
Стоит ли использовать sv_pure 1? sv_pure 1 запрещает клиентам использовать кастомные модели/звуки, отличающиеся от серверных. Это спасает от читеров, но ломает совместимость с многими аддонами. Для соревновательных режимов (TTT-турниры) - включать, для публичного DarkRP - оставить 0.
Как мониторить нагрузку постоянно? Используйте htop для CPU/RAM на хост-системе, iftop для трафика и плагин Server Status Monitor (Workshop) для статистики прямо в игре. Pterohost даёт встроенный мониторинг ресурсов в панели управления.