Діагностика відставання сервера Minecraft і низький TPS

Як працює Minecraft (що викликає затримку?)

Ключ до розуміння того, що викликає затримку, — це зрозуміти, як працює Minecraft. Серверне програмне забезпечення Minecraft працює в схожому питанні з однією ключовою проблемою: немає багатопотокових або тимчасових обмежень для основного циклу гри. Коли сервер переходить до tic, він виконує кожне оновлення TileEntity, оновлення сутності, оновлення блоку, події та інші процеси, поки це не буде завершено. Все це відбувається в одному потоці, і наступний цикл не може початися, поки поточний не закінчиться. Світ не буде оновлюватися, гравці не будуть рухатися, а сутності будуть заморожені на місці. В ідеалі кожен тик повинен займати не більше 50 мс для підтримки 20 тиків в секунду (TPS). Це може досягати 55,55 мс для 18 TPS з мінімальними проблемами. Будь-що нижче цього, і ви почнете бачити відставання.

Типові причини відставання

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

  • Використання файлів : будь-який плагін, який постійно зчитує файли програвача, особливо про такі події, як рух, пошкодження або взаємодія. Декількома прикладами можуть бути деякі PVP-прапорці або плагіни Glow, які будуть безперервно зчитувати файли програвача.
  • Плоскі файли як база даних : якщо у вас є плагіни, які використовують великі файли для відстеження великої кількості даних, ітерація через цей файл або в пам’яті, залежно від того, як вони зберігаються, займе багато часу. Багато плагінів роблять це і не вживають запобіжних заходів проти того, як, коли бази даних стануть роздутими, час обробки вплине на тік серверів. Ви часто побачите це під час завантаження великих конфігурацій MagicSpells або використання систем дозволів, які використовують YAML замість належної бази даних, наприклад PEX і GroupManager.
  • Занадто багато операцій : коли плагін створює занадто багато об’єктів або намагається виконати складні завдання з такими подіями, як рух, ви почнете бачити затримку. Навіть якщо кожен запуск займає менше 1 мс, коли ви обробляєте подію 20 тисяч разів на секунду, вона стає експоненційною. До цього можуть призвести плагіни для редагування світу, такі як VoxelSniper і WorldEdit; або плагіни захисту, такі як Anti Cheats і World Protections.
  • Завантажено забагато фрагментів : один фрагмент 16*16*256. Це може здатися не так багато, але якщо помножити, це означає, що на один фрагмент припадає 65 536 блоків. Кожен гравець може мати понад 200 блоків, завантажених навколо себе, залежно від вашої конфігурації. Це більше 13 107 200 блоків. Це займає багато пам’яті. Крім того, якщо навіть 1% з них — TileEntities, то це 131 072 завантажених TileEntities, які потрібно оновлювати кожен тик. Моди відомі тим, що мають повільний час обробки на TileEntities.
  • Каскадний WorldGen : це коли плагін або мод генерує структури за межами фрагмента, який йому надається. Це спричиняє завантаження наступного фрагмента, генерування, а потім знову його ініціювання, якщо структура також починає переповнюватися в наступний блок. Це поганий дизайн від імені творців, і будь-який плагін або мод, які роблять це, слід негайно видалити.
  • Об’єкти плитки : див. розділ LagGoggle нижче.

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

Звіти про час для Spigot/PaperSpigot

Щоб отримати детальний звіт про час, ви можете скористатися командою follow.

/timings on

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

/timings paste

Це дасть вам посилання на веб-сайт із гарною розбивкою звіту з простими параметрами для просіювання всіх даних, які ви отримуєте. Ви можете дізнатися більше про те, як їх читати на вікі Spigot's Timing .

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

/timings off

Звіти про час для Sponge

Щоб отримати детальний звіт про час, ви можете скористатися командою follow.

/sponge timings on

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

/sponge timings report

Це дасть вам посилання на веб-сайт із гарною розбивкою звіту з простими параметрами для просіювання всіх даних, які ви отримуєте. Оскільки система хронометражу Sponge заснована на системі Spigot, ви можете дізнатися більше про те, як читати їх у вікі Spigot .

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

/sponge timings off

Ви також можете скинути таймінги.

/sponge timings reset

Кроки для зменшення відставання

  • Використовуйте правильні аргументи для свого файлу сценарію, щоб запустити Minecraft. Дізнайтеся більше про відповідні аргументи Java тут
  • Використовуйте LuckPerms або менеджер дозволів, який використовує належну базу даних замість плоского файлу
  • Повністю уникайте завантажувачів шматків
  • Видаліть все, що викликає каскадну генерацію світу
  • Обмежте плагіни Anti Cheat, щоб не перестаратися
  • Обмежте відстань для перегляду гравців server.properties
  • Очистіть ворожих мобів через певний період часу
  • Перезавантажуйте сервер щодня, щоб усунути витоки з Java
  • НІКОЛИ не перезавантажуйте сервер, це спричиняє витоки та інші проблеми
  • Використовуйте версії плагінів FastAsync, такі як WorldEdit і VoxelSniper
  • Обмежте розмір свого світу, щоб нові фрагменти не створювалися постійно
  • Обмежте кількість плагінів, які ви використовуєте. Не всі плагіни створені добре, і чим більше у вас є, тим більше проблем ви зіткнетеся

LagGoggles

Велика частина затримок на модифікованих серверах походить від плиткових сутностей. Це сутності, створені для блоків, які використовуються для обробки функціональних можливостей і подій блоку. Якщо вони займають занадто багато часу або їх занадто багато, це може збільшити час на тик, знижуючи загальну TPS сервера. Спосіб візуалізації цих проблем — використання мода під назвою LagGoggles. Ви можете завантажити цей мод із CurseForce .


Як налаштувати сервер Tekkit Classic на Ubuntu 16.10

Як налаштувати сервер Tekkit Classic на Ubuntu 16.10

Використання іншої системи? Що таке Tekkit Classic? Tekkit Classic — це модпак для гри, яку всі знають і люблять; Майнкрафт. Він містить деякі з вер

Налаштуйте сервер 7 Days to Die на Ubuntu 14

Налаштуйте сервер 7 Days to Die на Ubuntu 14

У цьому посібнику ви дізнаєтеся, як налаштувати власний сервер 7 Days to Die (7D2D) на Ubuntu. Зверніть увагу, що ця гра все ще має ранній доступ і що th

Налаштування сервера Half Life 2 на CentOS 6

Налаштування сервера Half Life 2 на CentOS 6

У цьому посібнику буде описано процес встановлення ігрового сервера Half Life 2 на систему CentOS 6. Крок 1: Встановлення необхідних умов Щоб налаштувати ou

Counter-Strike Global Offensive Server Launcher на Ubuntu

Counter-Strike Global Offensive Server Launcher на Ubuntu

Ті, хто має досвід налаштування спеціальної CS:GO (Counter-Strike: Global Offensive), знають, що процес використання інтерфейсу командного рядка для керування

Налаштування Counter Strike: Source на Debian

Налаштування Counter Strike: Source на Debian

У цьому посібнику ми будемо налаштовувати ігровий сервер Counter Strike: Source на Debian 7. Ці команди були перевірені на Debian 7, але вони також повинні працювати

Як встановити Unturned 2.2.5 на Debian 8

Як встановити Unturned 2.2.5 на Debian 8

У цьому посібнику ви дізнаєтеся, як налаштувати сервер Unturned 2.2.5 на Vultr VPS під керуванням Debian 8. Примітка. Це відредагована версія Unturned, яка не

Як встановити Cuberite на сервері CentOS 6 або 7

Як встановити Cuberite на сервері CentOS 6 або 7

Вступ Що таке куберит? Cuberite — це масштабована реалізація сервера Minecraft з відкритим кодом, написана на C++. Він має простий у використанні плагін

Встановлення Teamspeak на CentOS 7

Встановлення Teamspeak на CentOS 7

Teamspeak — це VOIP-сервер, який можна використовувати для спілкування команд або кількох людей. Він відносно легкий і безпечний, оскільки випускаються оновлення

Як встановити SteamCMD на свій VPS

Як встановити SteamCMD на свій VPS

У цьому підручнику ми встановимо SteamCMD. SteamCMD можна використовувати для завантаження та встановлення багатьох ігрових серверів Steam, таких як Counter-Strike: Global Offensiv

Запуск сервера Teamspeak 3 на CentOS 6.4

Запуск сервера Teamspeak 3 на CentOS 6.4

Виконайте наступні команди, щоб встановити сервер Teamspeak 3. # Безпечний Iptables iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -

Як встановити сервер Left 4 Dead на CentOS 7

Як встановити сервер Left 4 Dead на CentOS 7

У цьому посібнику я поясню, як встановити та налаштувати сервер L4D на CentOS 7. Встановлення Left 4 Dead Перш ніж почати, ми повинні переконатися, що

Як встановити сервер Minecraft на Ubuntu 14.04

Як встановити сервер Minecraft на Ubuntu 14.04

Використання іншої системи? У цій статті ми збираємося встановити сервер Minecraft на Ubuntu. Переконайтеся, що ви ввійшли під користувачем, який isn

Як встановити SA-MP San Andreas Multiplayer на CentOS 7

Як встановити SA-MP San Andreas Multiplayer на CentOS 7

У цьому підручнику ви дізнаєтеся, як налаштувати сервер SA-MP (San Andreas Multiplayer) на CentOS 7.

Налаштуйте сервер TeeWorlds

Налаштуйте сервер TeeWorlds

TeeWorlds — це безкоштовна багатокористувацька онлайн-гра з відкритим вихідним кодом. У цьому підручнику я збираюся пояснити, як створити сервер TeeWorlds. Ці кроки були

Запустіть власний сервер Arma 3 на Ubuntu 14

Запустіть власний сервер Arma 3 на Ubuntu 14

Огляд У цьому посібнику буде описано встановлення та роботу вашого сервера Arma 3 за допомогою SteamCMD та екрана. Для отримання додаткової інформації щодо th

Як встановити Tekkit Classic Server на CentOS 6/7

Як встановити Tekkit Classic Server на CentOS 6/7

Використання іншої системи? У цьому підручнику створіть сервер Tekkit Classic. Tekkit — ще один популярний модпак, створений для Minecraft. За рахунок суми

Як встановити Glowstone (Minecraft) на сервер CentOS 7

Як встановити Glowstone (Minecraft) на сервер CentOS 7

Використання іншої системи? Вступ Glowstone, безсумнівно, є найбільш оптимізованим сервером для Minecraft. Програмне забезпечення має низьке використання пам’яті та використання

Як встановити Unturned на Linux

Як встановити Unturned на Linux

Використання іншої системи? Вступ У цьому посібнику ви дізнаєтеся, як налаштувати та встановити сервер Unturned на Linux. Unturned — популярний виживання

Налаштування ігрового сервера JC2:MP на Debian

Налаштування ігрового сервера JC2:MP на Debian

У цьому посібнику ми будемо налаштовувати сервер Just Cause 2: багатокористувацький сервер Linux. Ці команди були перевірені на Debian 7 x64, але вони також повинні працювати на th

Встановіть сервер Minecraft на Fedora 26

Встановіть сервер Minecraft на Fedora 26

Використання іншої системи? У цьому підручнику я розповім вам, як налаштувати сервер Minecraft на високопродуктивному SSD VPS на Vultr. Ти навчишся хо

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

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

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

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

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

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

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

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

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

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

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше