Коротка відповідь
Спершу приберіть погано оптимізовані плагіни, бо вони коштують більше, ніж усе інше разом
узяте. Потім встановіть batching.colliders "0", обмежте
fps.max між 30 і 100, підвищте server.saveinterval "600",
і розгляньте nav_disable "true" та ai.think 0, якщо можете обійтися
без руху тварин.
Ключові моменти
- Rust потребує тактову частоту, а не кількість ядер. Основні функції Unity однопотокові.
- Один погано написаний плагін може звести нанівець усі інші оптимізації з цієї сторінки.
- FPS сервера це не FPS гравця. Це різні цифри, що вимірюють різні речі.
- Вимірюйте плагіном Performance Monitor, потім вивантажте його. Він теж коштує продуктивності.
- Кожен конвар тут це компроміс. Знайте, від чого відмовляєтеся, перш ніж його встановити.
Що насправді впливає на продуктивність
Стабільна продуктивність запевняє ваших гравців, що вони мають безпечне місце для гри, де вони не програють бій через лаги і не злетять з обриву через рубербендинг. Варто точно знати, звідки вона береться, бо час, витрачений не на те, витрачено даремно.
Приблизно за ступенем впливу:
- Плагіни. Один погано написаний може домінувати на кожному тіку сервера.
- Тактова частота CPU. Стеля, під якою працює все інше.
- Кількість сутностей. Наприкінці циклу вайпу саме це змінюється під вами.
- Операції збереження. На великому світі помітні щоразу, коли відбуваються.
Залізо: тактова частота важливіша за кількість ядер
Ви побачите значно кращу продуктивність сервера у провайдерів, що використовують швидші процесори з частотою вище 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 секунд, чого достатньо, щоб дістатися безпечного місця. Тихий
рестарт посеред рейду забере у вас більше гравців, ніж виграш у продуктивності.
Що робити, по порядку
-
Спершу виміряйте
Перевірте FPS сервера через RCON і коротко запустіть Performance Monitor. Без базового рівня ви не зможете сказати, чи допомогло щось із того, що ви зробили.
-
Приберіть найгірший плагін
Той, який назвав монітор. Це майже завжди найбільший окремий виграш, який доступний, і він безкоштовний.
-
Налаштуйте плагіни, які залишаєте
Таймери та інтервали в їхніх конфігураційних файлах, де вони є.
-
Застосуйте конвари
Почніть з
batching.colliders "0",fps.maxіserver.saveinterval, які не коштують вам нічого, що помітять ваші гравці. Розгляньтеnav_disableіai.thinkлише якщо можете прийняти нерухому живність. -
Виміряйте знову
Ті самі інструменти, ті самі умови, бажано за схожої кількості гравців. Потім вивантажте монітор.
-
Погляньте на залізо
Якщо ви зробили все вищезазначене, а продуктивність все ще низька, стеля це процесор, і жодне налаштування це не подолає.
Якщо ви на цьому останньому кроці, наш гайд про те, на що звертати увагу при купівлі Rust сервера розповідає, що запитати у хостера перед переходом.