оптимізуємо сервер

Отже ви створили свій сервер CS 1.6, але ось адже проблема, сервер періодично зависає або падає, у гравців моторошно скаче пінг.
Як позбутися або ж звести до мінімуму ризик виникнення подібних неприємностей:

1. Вимоги до "заліза" і підключенню

Одна з причин лагов на сервері - недостатня потужність комп'ютера або недостатня швидкість і надійність з'єднання з мережею.
Насправді ознайомитися з цим пунктом бажано ще до того як ви вирішите створювати сервер.

Розглянемо докладніше системні вимоги HLDS сервера. Увага, всі вимоги наведені з урахуванням того, що комп'ютер використовується тільки для забезпечення роботи сервера, якщо є ще й паралельні завдання (наприклад ви хочете пограти на сервері з того ж комп'ютера де він і встановлений), вимоги необхідно підвищити.

оптимізуємо сервер

Таким чином при визначенні необхідного розміру пам'яті під сервер керуйтеся вимогами:

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 кбіт / сек)
Зауважимо, що реально середній споживаний трафік, буде трохи нижче наведених значень, але швидкість сильно змінюється в процесі роботи сервера, тому потрібно керуватися максимальними значеннями.
Множимо ці значення на число слотів на сервері і отримуємо вимога до швидкості.

FPS сервера означає швидкість роботи сервера. Не варто плутати його з клієнтським FPS, які означають число кадрів в секунду на моніторі клієнта.
Latency гравців залежить в тому числі і від того, наскільки швидко сервер обробляє отримані від клієнтів пакети даних і формує відправляються пакети клієнтам. Тобто чим більше 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.7 (я юзаю цей, можна 2.40) - плагін до 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 0
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. Використовувати його можете на свій розсуд, на даний момент плагін дуже добре себе арекомендовал, я користуюся ним.

- Обробка пакетів HLDS в необхідний час.
При цьому способі сервер 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 (клієнта), то краще залишити середнім.

Схожі статті