Pterohost docs

Оптимизация 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/lossnet_graph 3, ping
CPUНизкий tickrate сервера (FPS < tickrate)stats, host_thread_mode
RAMStutter каждые 30-60 сек, рост swaptop -p $(pgrep srcds)
LuaРезкие фризы при действиях игроковlua_dumpgcdata, gmsv_profiler
ФизикаЛаги при большом количестве propssv_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Причина
Sandbox33Стандарт, физика и так дорогая
DarkRP33Не PvP-фокус, экономия CPU
TTT66Нужна точная регистрация хитов
Murder66Динамические PvP-стычки
Prop Hunt33Достаточно для геймплея
MilitaryRP66Стрелковые перестрелки
Deathrun66Прыжковая механика

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-кода в аддонах. Основные правила оптимизации:

  1. Кэшировать ссылки на функции: local table_insert = table.insert в начале файла - вызов в 2-3 раза быстрее, чем table.insert.
  2. Избегать хук Think с тяжёлой логикой: Think вызывается каждый тик. Если код в нём не успевает за 1/tickrate секунды - сервер лагает.
  3. Использовать Timer вместо Think: для проверок раз в секунду timer.Create("MyCheck", 1, 0, function() ... end) дешевле, чем Think.
  4. Удалять ненужные хуки: hook.Remove("Think", "MyAddon_Think") после использования.
  5. Не вызывать SQLite-запросы в хуках: батчинг и кэширование.
  6. Заменять 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.
  • Хуки явно удаляются после использования.

Как поможет более мощное железо?

Если оптимизация не помогает - возможно, вы упёрлись в железо. Типичные конфигурации:

СлотыРежимCPURAMДиск
16Sandbox/TTT3.5 ГГц2 ГБSSD 20 ГБ
24DarkRP лайт4.0 ГГц3 ГБNVMe 30 ГБ
32DarkRP4.5 ГГц4 ГБNVMe 50 ГБ
48MilitaryRP5.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 даёт встроенный мониторинг ресурсов в панели управления.