Перейти до основного вмісту

Тюнінг Rust сервера

Як покращити продуктивність Rust сервера

Продуктивність сервера це те, що не дає гравцям програвати бої через лаги та злітати з обривів через рубербендинг. Здебільшого все зводиться до трьох речей: тактової частоти процесора, плагінів, які ви запускаєте, і приблизно пʼяти конварів.

  • Посібники з Rust
  • Оновлено
  • 9 хв читання
  • Тактова частота CPU
  • Навантаження від плагінів
  • 5 ключових конварів
Ключові конвариserver.cfgbatching.colliders "0" # знову увімкніть вище 265k сутностейnav_disable "true" # тварини та NPC перестають рухатисяserver.saveinterval "600"ai.think 0fps.max 30 # корисний діапазон від 30 до 100

Коротка відповідь

Спершу приберіть погано оптимізовані плагіни, бо вони коштують більше, ніж усе інше разом узяте. Потім встановіть batching.colliders "0", обмежте fps.max між 30 і 100, підвищте server.saveinterval "600", і розгляньте nav_disable "true" та ai.think 0, якщо можете обійтися без руху тварин.

Ключові моменти

  • Rust потребує тактову частоту, а не кількість ядер. Основні функції Unity однопотокові.
  • Один погано написаний плагін може звести нанівець усі інші оптимізації з цієї сторінки.
  • FPS сервера це не FPS гравця. Це різні цифри, що вимірюють різні речі.
  • Вимірюйте плагіном Performance Monitor, потім вивантажте його. Він теж коштує продуктивності.
  • Кожен конвар тут це компроміс. Знайте, від чого відмовляєтеся, перш ніж його встановити.

Що насправді впливає на продуктивність

Стабільна продуктивність запевняє ваших гравців, що вони мають безпечне місце для гри, де вони не програють бій через лаги і не злетять з обриву через рубербендинг. Варто точно знати, звідки вона береться, бо час, витрачений не на те, витрачено даремно.

Приблизно за ступенем впливу:

  1. Плагіни. Один погано написаний може домінувати на кожному тіку сервера.
  2. Тактова частота CPU. Стеля, під якою працює все інше.
  3. Кількість сутностей. Наприкінці циклу вайпу саме це змінюється під вами.
  4. Операції збереження. На великому світі помітні щоразу, коли відбуваються.

Залізо: тактова частота важливіша за кількість ядер

Ви побачите значно кращу продуктивність сервера у провайдерів, що використовують швидші процесори з частотою вище 3GHz. Причина архітектурна, а не випадкова: основні функції Unity однопотокові, тож вони працюють на одному ядрі і не можуть розподілятися на інші. 32-ядерний процесор на 2.2GHz запустить Rust сервер гірше, ніж 8-ядерний на 4GHz.

Кількість ядер не є неважливою. Такі речі, як ШІ NPC та тварин, і інші обʼєкти, повʼязані з мапою, можна розподілити між кількома ядрами, тому сервери з більшою кількістю гравців справді виграють від додаткових ядер. Хороший хостер повинен пропонувати опцію більшої кількості ядер для більшого сервера, і повинен взагалі хостити Rust на високочастотних процесорах.

Це єдина найкорисніша річ, яку варто перевірити перед покупкою. Якщо хостер рекламує кількість ядер та обсяг RAM, але не тактову частоту, зазвичай це тому, що тактова частота не є перевагою.

Плагіни: найбільший окремий фактор

uMod це модифікаційний додаток для Rust, який дозволяє серверам запускати плагіни, розроблені здебільшого спільнотою. На продуктивність сервера не вплине добре написаний, активно підтримуваний плагін.

Але її знищить поганий. Без вашого відома невеликий фрагмент коду в будь-якому з ваших плагінів може серйозно погіршити продуктивність сервера, і ніщо в розмірі чи вигляді простоти плагіна не підказує вам, який саме. Навіть найменший, найлегший на вигляд плагін може спричинити хаос, що підтвердить будь-який досвідчений власник Rust сервера чи розробник плагінів.

Уникайте запуску занадто великої кількості плагінів. Сама кількість має свою ціну, окремо від якості будь-якого окремого плагіна, і відповіддю на проблему частіше є видалення плагіна, ніж додавання нового.

Оптимізація плагінів, які ви залишаєте

Деякі плагіни мають налаштування для тюнінгу продуктивності, як-от таймери та інтервали. Зазвичай вони вимкнені за замовчуванням або встановлені консервативно. Загляньте у конфігураційний файл плагіна і увімкніть їх, бо плагін, що опитує кожен тік, коли міг би опитувати кожні тридцять секунд, виконує в тридцять разів більше роботи, ніж потрібно.

Вимірювання перед будь-якими змінами

Здогадуватися про проблеми з продуктивністю це марна трата часу. Варто зробити два виміри.

FPS сервера

Це частота кадрів, на якій працює сервер. Вона не має прямого впливу на частоту кадрів ваших гравців, хоча висока кількість сутностей в одному місці вплине на обидва показники. Стежте за нею через RCON командою FPS.

Плагін Performance Monitor

Performance Monitor для uMod показує в реальному часі інформацію про використання памʼяті, час хуків плагінів та інші показники часу, що впливають на продуктивність сервера. Він покаже вам, який плагін витрачає найбільше часу на одному хуку, що перетворює "серверу погано" на конкретне імʼя.

Не залишайте Performance Monitor працювати постійно. Сам моніторинг споживає ресурси і погіршить продуктивність, яку ви намагаєтеся виміряти. Встановіть його, зробіть заміри, подійте на їх основі, потім вивантажте його.

Конвари, які мають значення

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

batching.colliders "0"

Прибирає потребу серверу батчити сутності. Це великий приріст продуктивності: з увімкненим батчингом щоразу, коли хтось будує, сервер має розбатчувати, а потім знову батчити всі повʼязані сутності.

Нюанс: якщо ваш сервер перевищить 265,000 сутностей, вам потрібно буде знову увімкнути це, щоб обійти ліміт сутностей Unity. Наприкінці довгого циклу вайпу на завантаженому сервері це реальна цифра, а не теоретична, тож варто за нею стежити.

nav_disable "true"

Вимикає NAV mesh на вашому сервері. Приріст продуктивності великий. Ціна в тому, що тварини та NPC повністю перестають рухатися.

Чи це прийнятно, залежить від вашого сервера. На сервері, орієнтованому переважно на PvP, де ніхто не полює на оленів, це майже безкоштовно. На PvE або рольовому сервері це прибирає значну частину гри.

ai.think 0

Ви могли помітити на великих серверах, що тварини не реагують і не дають відсіч. Це ai.think, встановлений у 0. Це має суттєвий позитивний вплив на продуктивність, особливо коли кількість гравців висока і гравці часто перебувають поруч із тваринами.

server.saveinterval "600"

Ви можете бачити падіння FPS на стороні сервера під час збереження на сервері з великою кількістю сутностей. Збільшення тривалості між збереженнями зводить це до мінімуму.

Компроміс тут це ризик: довший інтервал означає більше втраченого прогресу, якщо сервер впаде між збереженнями. 600 секунд це розумний баланс, але якщо ваш сервер нестабільний з інших причин, не виправляйте симптом, роблячи збої дорожчими.

fps.max

Контроль FPS вашого сервера загалом хороша ідея, щоб зупинити сервер від роботи сильнішої, ніж потрібно, без жодної користі для ваших гравців. Facepunch заявляли, що гравці не помітять сервер, обмежений до 30 кадрів за секунду. Встановлення fps.max на число між 30 і 100 настійно рекомендується.

Рестарти

Щоденні рестарти можуть допомогти продуктивності на модованих серверах. Довготривалі процеси накопичують тиск на памʼять, а плагіни, що повільно течуть, достатньо поширені, щоб запланований рестарт був розумною страховкою.

Плануйте їх на тиху годину і анонсуйте. global.restart дає гравцям попередження за 300 секунд з відліком кожні 5 секунд, чого достатньо, щоб дістатися безпечного місця. Тихий рестарт посеред рейду забере у вас більше гравців, ніж виграш у продуктивності.

Що робити, по порядку

  1. Спершу виміряйте

    Перевірте FPS сервера через RCON і коротко запустіть Performance Monitor. Без базового рівня ви не зможете сказати, чи допомогло щось із того, що ви зробили.

  2. Приберіть найгірший плагін

    Той, який назвав монітор. Це майже завжди найбільший окремий виграш, який доступний, і він безкоштовний.

  3. Налаштуйте плагіни, які залишаєте

    Таймери та інтервали в їхніх конфігураційних файлах, де вони є.

  4. Застосуйте конвари

    Почніть з batching.colliders "0", fps.max і server.saveinterval, які не коштують вам нічого, що помітять ваші гравці. Розгляньте nav_disable і ai.think лише якщо можете прийняти нерухому живність.

  5. Виміряйте знову

    Ті самі інструменти, ті самі умови, бажано за схожої кількості гравців. Потім вивантажте монітор.

  6. Погляньте на залізо

    Якщо ви зробили все вищезазначене, а продуктивність все ще низька, стеля це процесор, і жодне налаштування це не подолає.

Якщо ви на цьому останньому кроці, наш гайд про те, на що звертати увагу при купівлі Rust сервера розповідає, що запитати у хостера перед переходом.

Більше посібників для тих, хто тримає власний сервер Rust.

Короткі відповіді

Поширені запитання

За ступенем впливу: погано написаний плагін, що витрачає час хуків, процесор з низькою тактовою частотою, дуже висока кількість сутностей, і операції збереження на великому світі. Зазвичай винні саме плагіни, бо один погано написаний може домінувати на кожному тіку незалежно від того, наскільки хороше залізо.

Тактова частота важливіша за кількість ядер. Основні функції Unity однопотокові, тому процесор з частотою вище 3GHz дає разючу різницю. Додаткові ядра справді допомагають з ШІ та роботою, повʼязаною з мапою, тому сервери з більшою кількістю гравців виграють від них, але процесор з багатьма ядрами й низькою частотою це неправильна форма заліза для Rust.

Десь між 30 і 100. Facepunch заявляли, що гравці не помітять сервер, обмежений до 30 кадрів за секунду, а якщо дозволити серверу працювати сильніше, ніж потрібно, гравці нічого від цього не виграють. Обмеження звільняє потужність для роботи, яка справді впливає на геймплей.

Так, значно, але ціною. Встановлення nav_disable "true" вимикає NAV mesh, що дає великий приріст продуктивності і повністю зупиняє рух тварин та NPC. Чи прийнятний цей компроміс, повністю залежить від того, який сервер ви ведете.

Це прибирає потребу серверу батчити сутності. Це великий приріст продуктивності, бо з увімкненим батчингом сервер має розбатчувати і знову батчити всі повʼязані сутності щоразу, коли хтось будує. Нюанс реальний: понад 265,000 сутностей вам потрібно знову увімкнути це, щоб обійти ліміт сутностей Unity.

Використайте плагін Performance Monitor для uMod, який показує використання памʼяті та час хуків плагінів і покаже, який плагін витрачає найбільше часу на одному хуку. Не залишайте його працювати постійно, бо саме моніторинг коштує продуктивності.

Хостинг Rust на залізі з високою тактовою частотою

Rust однопотоковий там, де це важливо, тому ми запускаємо його на високочастотних процесорах у власному дата-центрі у Великій Британії, а не на тому, що має найбільше ядер.

  • Дата-центр у Великій Британії
  • Високочастотні процесори
  • Підтримка через тікети та Discord