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

сервер

Отже ви створили свій сервер 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 вимагатиме більшого навантаження сервера на процесор. 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_minsleep 3>booster_force_systicrate 0 booster_cpu_enabled 0 booster_cpu_spikemax 3 booster_cpu_spikelevel 75 booster_cpu_mminc 2 З усіх цих налаштувань має бути важливим booster_PS друга обмежує максимум 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 ядро.

Сервер може сильно класти або навіть зависнути у разі успішно проведеної DDos атаки. Для захисту від атак та експлоїтів рекомендується використовувати програму Anti CSDoS. Все, що вам потрібно це запустити програму, натиснути кнопку "Patch HLDS" і залишити у фоновому режимі. Остання версія Anti CSDoS 3.2 захищає від усіх відомих атак практично будь-яку версію сервера.

4. HLDS спільно з іншими програмами