Сервер без
лагов l Оптимизация сервера CS 1.6. Уменьшаем лаги
Итак вы создали свой сервер CS 1.6, но вот ведь загвоздка, сервер
периодически зависает или падает, у игроков кошмарно скачет пинг...
Как
избавиться или же свести к минимуму риск возникновения подобных
мерзостей:
1. Запросы к "металлу" и включению
Одна из причин
лагов на сервере - недостаточная мощность компьютера или недостаточная
скорость и надежность сетевого соединения.
На самом деле ознакомиться
с этим пунктом желательно еще до того как вы постановить образовывать
сервер.
Рассмотрим подробнее системные запросы HLDS сервера.
Внимание, целое запросы приведены с учетом того, что компьютер
используется едва для обеспечения работы сервера, если есть еще и
параллельные задачи(например вы хотите поиграть на сервере с того же
компьютера где он и установлен), запросы необходимо повысить.
-
Оперативная память
Наиболее важное системное запрос. Зависит в
ведущую очередь от величины слотов на сервере. Также зависит от модов и
плагинов, но в меньшей стадии. Во время работы HLDS сервер потребляет в
среднем 8-12Мб на 1 игровой слот, но поскольку это значение может
достаточно адски варьироваться, то рекомендуемым значением является 20Мб
на слот.
Таковым образом при определении необходимого размера памяти
под сервер руководствуйтесь запросами:
10 слотов на сервере = 200Мб
RAM
12 слотов на сервере = 240Мб RAM
16 слотов на сервере = 320Мб
RAM
20 слотов на сервере = 400Мб RAM
24 слота на сервере = 480Мб
RAM
и т. д.
- Процессор
Нагрузка на процессор во многом
зависит от того будут ли на сервер установлены моды, и если да то
какие. например сервер с Zombie-модом будет тратить возможности CPU раза
в 2 больше чем простой паблик. Также многое тут зависит от величины
слотов, от требуемого FPS сервера. В всеобщем для примерной оценки можно
сказать что для нормальной работы паблика на 20 слотов с последней
версией AMXX без дополнительных модов подойдет всякий процессор
Intel/AMD с частотой 2Ггц.
Если вы собираетесь поднимать более одного
сервера, то желательно(но не обязательно) чтобы и ядер в процессоре
было больше одного.
Остальные параметры металла доигрывают жалкую
образ и рассматривать их подробно не будем.
- Сетевое соединение
(Если вы образовываете сервер едва для локалки, вам этот пункт не
нужен)
Запрос к скорости соединения с интернетом зависит в ведущую
очередь от величины слотов, а также, в меньшей стадии от плагинов.
Наиболее требователен HLDS сервер к исходящей скорости (скорости
отдачи), с этим нужно быть внимательнее, поскольку многие провайдеры
делают в своих безлимитных тарифах исходящую скорость (скорость отдачи)
заметно ниже, чем входящую скорость (скорость закачки).
Необходимая
исходящая скорость на 1 слот примерно 15 кбайт/сек (120 кбит/сек)
Необходимая
входящая скорость на 1 слот примерно 2 кбайт/сек (16 кбит/сек)
Заметим,
что реально средний потребляемый трафик, будет несколько ниже
приведенных значений, но скорость адски меняется в процессе работы
сервера, поэтому нужно руководствоваться максимальными значениями.
Умножаем
эти значения на величина слотов на сервере и получаем запрос к
скорости.
2. FPS сервера
FPS сервера означает скорость
работы сервера. Не стоит путать его с клиентским FPS, которые означают
величина эпизодов в секунду на мониторе клиента.
Latency игроков
зависит в том величине и от того, насколько быстро сервер обрабатывает
полученные от клиентов пакеты данных и формирует отправляемые пакеты
клиентам. То есть чем больше FPS сервера, тем быстрее он работает и тем
ниже пинг игроков. Но высокое значение FPS потребует большей нагрузки
сервера на процессор.
Методы повышения FPS:
Linux
На
линуксе целое очень свободно:
добавляем в параметры командной строки
-pingboost 3 для обеспечивания максимальной нагрузки на CPU и
максимального FPS. Если нагрузку надо снизить то понижаем значение до
-pingboost 2 или -pingboost 1.
Windows
Тут целое несколько
сложнее. По-умолчанию в Windows установлена излишне низкая частота
MMTimer(мультимедиа таймер), в следствии чего HLDS сервер обрабатывает
пакеты с низкой частотой, из-за этого fps сервера не будет больше 64,
что хорошему пингу не способствует. Есть 2 пути решения этой загвоздки:
-
Увеличение частоты mmtimer.
Самый простой способ - запуск любого
приложения Windows, который увеличивает частоту mmtimer, например
Windows Media Player. Свободно запускаете WMP в заднем режиме и FPS
увеличивается до 500 а возможно и до 1000. Во время работы сервера в
зависимости от нагрузки на процессор FPS изменяется в диапазоне от 150
до 500 или до 1000.
Также можно использовать Booster 1.70(я юзаю
этот,можно новее) - плагин к Metamod.
Действует он таковым же
образом, изменяя mmtimer для обеспечения заданного FPS.
Вот настройки
Booster 1.70 по-умолчанию: (добавлять в server.cfg)
booster_show_connmsg
1
booster_autofps 150
booster_minsleepms 3
booster_force_systicrate
0
booster_cpu_enabled 1
booster_cpu_spikemax 3
booster_cpu_spikelevel
75
booster_cpu_mminc 2
Из целых этих настроек наиболее важны
booster_autofps и booster_minsleepms, ведущая означает каким FPS должен
быть в среднем, вторая ограничивает максимум FPS близким образом,
например:
booster_autofps 150 означает, в среднем FPS сервера будет
около 150 fps
booster_minsleepms 3 означает, что максимум FPS сервера
= 1000/3 = 333 fps
Настраивать их нужно по своему усмотрению, в
зависимости от нагрузки сервера на ваш процессор. Помните, что не всегда
имеет смысл гнаться за излишне высоким FPS, иногда лучше снизить
нагрузку. Отличия в пинге игроков и нагрузке на CPU меж серверами
работающие допустим на 200 и на 500 FPS достаточно карликовые. Эти же
самые различия для серверов к примеру на 64 и на 200 FPS гораздо больше.
То есть пинг не будет снижаться пропорционально увеличению FPS.
Важно,
если вы используете Booster - никаких других приложений, увеличивающих
частоту mmtimer не должно быть запущено, иначе контроль максимума fps
booster_minsleepms теряет смысл.
Миссия мониторинга нагрузки CPU -
booster_cpu_enabled 1 работает едва на английской версии Windows и едва
для одноядерных процессоров.
Есть еще один плагин схожий по миссиям,
но шире по настройкам и вероятностям, чем Booster. Это ALX Lowping.
Использовать его можете на свое усмотрение, но на данный момент временно
что плагин довольно "сырой" и содержит баги.
- Обработка пакетов
[b]HLDS в необходимое время.[/b]
При этом способе сервер HLDS
обрабатывает пакеты едва в то время, когда это необходимо, то есть,
когда приходит пакет от клиента. FPS сервера будет увеличен как
настолько, насколько это нужно для обработки пакета. Поскольку этот
способ не требует увеличения частоты mmtimer, то он может неплохо
сэкономить возможности CPU. Для этого нужно определить плагин
Booster
Lite
Настройки Booster Lite по умолчанию:
sys_ticrate 10000
booster_lite_mode
0 //контролирует стадия нагрузки на CPU (от 0 до 3) 0 - самый высокий
уровень, наиболее эффективно понижает пинг, 3 - самый низкий уровень,
фактически отключает Booster-Lite
booster_lite_extra_sleep_frequency
10
Использование Booster-Lite позволяет достичь такового же, а
возможно даже и лучшего результата, чем при использовании Booster. И при
этом к тому же нагрузка на процессор будет существенно меньшей даже
если назначать booster_lite_mode 0.
Есть едва один минус - при
использовании Booster-Lite нельзя запускать никакие приложения,
повышающие частоту mmtimer (Windows Media Player, Winamp, QIP и т.д.).
Иначе последствия будут непредсказуемыми, начиная от ускорения игрового
времени на сервере и заканчивая вылетом сервера с ошибкой.
Какой
из двух методов повышения FPS выбрать решать вам. Можно еще использовать
Booster версии выше чем 2.0, там объединены миссии Booster 1.7 и
Booster-Lite, но его использование повышает риск падения сервера.
Если
у вас несколько серверов и многоядерный процессор и вы хотите
распределить разные сервера(нагрузку) по разным ядрам, не используйте
Booster 1.70 или ALX LowPing, поскольку несмотря на заданное
соответствие (Affinity), нагрузка целых серверов всегда будет ложиться
едва на 1 ядро.
3. Защита от атак
Сервер может адски
лагать или даже зависнуть в деле благополучно проведенной DDos атаки.
Для защиты от атак и эксплоитов отрекомендовывает использовать программу
Anti CSDoS. Целое что от вас требуется это запустить программу, нажать
кнопку "Patch HLDS" и оставить в заднем режиме. Последняя версия Anti
CSDoS 3.2 защищает от целых известных атак фактически любую версию
сервера.
4. HLDS совместно с другими программами
Что
делать, если вы хотите поиграть на собственном сервере, но как едва на
него заходите, он начинает адски лагать? Тут целое дело в расстановке
соответствий и приоритетов. Заходите в диспетчер задач (Ctrl+Alt+Del)
находите в ведомости "Процессы" hlds.exe правая кнопка -> приоритет -
выше среднего. На процесс hl.exe приоритет назначаю ниже среднего, но
если это приведет к падению FPS(клиента), то лучше оставить средним.




_Filevu4=)





