⚡ Современная оптимизация современных серверов

⚡ Современная оптимизация современных серверов

Что автор думает на счёт
Не подходит для ванилы. И как написал автор
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Последнее редактирование:
Что автор думает на счёт
Это ядро больше для миниигр или когда вам зачем-то нужно делить один сервер на несколько. Ставить его на простое выживание нет смысла
 
offtop POV: Упомянул сборник ядер
You must be registered for see images
 
Спасибо за упоминание моей статьи, скоро там будет обновление как раз :)
 
Разбейте раздел paper на paper-global.yml и paper-world-defaults.yml
 
Я бы добавил в гайд еще пару вещей.
1) Не такая значительная - disable-relative-projectile-velocity: true
Скорее всего импакт мизерный (если вообще есть), но раз disable-chest-cat-detection в гайдах есть, почему бы и это сюда не включить?
2) Уже куда более сильная в оптимизации штука, направленная на уничтожение лагов от АФК-ферм. Сработает нормально только на purpur и форках.
Шаги настройки:
1 - включает idle-timeout в сервер.пропертиз, на какой хотим (указывается в минутах)
2 - Ищем в purpur.yml настройки idle
Выставляем kick-if-idle: false (если не хотим, чтобы игрока кикало при истечении времени)
Выставляем tick-nearby-entities: false и mobs-target: false. Таким образом вокруг игроков, которые будут стоять в АФК не будут активны мобы, что одновременно повысит оптимизацию, но и убьет АФК фермы! Так что с этим надо быть аккуратным.
 
Есть важные замечания по java-флагам от Hilltty:

1) флаг -XX:-UseBiasedLocking был убран в Java 18.0 (проверял и на Oracle JDK, и на OpenJDK), поэтому его добавление ничего не меняет;
2) флаг -XX:+UseShenandoahGC вообще не работает (сервер сразу останавливается с ошибкой "Option -XX:+UseShenandoahGC not supported"), потому что с версии Java 15 его убрали.

И поэтому, мне всё ещё не совсем понятно, какие флаги для сервера на Java 18 сегодня самые лучшие? Которые из них делают что-то действительно полезное для улучшения производительности? Также, есть ли вообще необходимость использовать флаги Aikar и менять сборщик мусора в Java 18?
 
Есть важные замечания по java-флагам от Hilltty:

1) флаг -XX:-UseBiasedLocking был убран в Java 18.0 (проверял и на Oracle JDK, и на OpenJDK), поэтому его добавление ничего не меняет;
2) флаг -XX:+UseShenandoahGC вообще не работает (сервер сразу останавливается с ошибкой "Option -XX:+UseShenandoahGC not supported"), потому что с версии Java 15 его убрали.

И поэтому, мне всё ещё не совсем понятно, какие флаги для сервера на Java 18 сегодня самые лучшие? Которые из них делают что-то действительно полезное для улучшения производительности? Также, есть ли вообще необходимость использовать флаги Aikar и менять сборщик мусора в Java 18?
Кто вообще использует Java 18? Это вроде не LTS версия.
 
Кто вообще использует Java 18? Это вроде не LTS версия.
Зато 17 LTS. И 21 будет LTS. И у обеих нет Schenandoah.
Объединено

Есть важные замечания по java-флагам от Hilltty:

1) флаг -XX:-UseBiasedLocking был убран в Java 18.0 (проверял и на Oracle JDK, и на OpenJDK), поэтому его добавление ничего не меняет;
2) флаг -XX:+UseShenandoahGC вообще не работает (сервер сразу останавливается с ошибкой "Option -XX:+UseShenandoahGC not supported"), потому что с версии Java 15 его убрали.

И поэтому, мне всё ещё не совсем понятно, какие флаги для сервера на Java 18 сегодня самые лучшие? Которые из них делают что-то действительно полезное для улучшения производительности? Также, есть ли вообще необходимость использовать флаги Aikar и менять сборщик мусора в Java 18?
Можете начать копать в сторону ZGC.
Сам конкретного ничего не подскажу - на практике не использовал его сам. Но те, кто используют - довольны. Особенно когда выделен большой хип под сервер.
 
Последнее редактирование:
Зато 17 LTS. И 21 будет LTS. И у обеих нет Schenandoah.
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Вам необходимо зарегистрироваться для просмотра изображений-вложений


Это не так. Если выбрать нужного поставщика пакета, там будет Shenandoah. Просто его не все включают в поставку. Например, GraalVM не поставляют, тк он несовместим с тамошним сборщиком
 
Хотелось бы добавить немного оптимизированных значений от меня, разраба Mirai и из статьи YouHaveTrouble, которые не упомянуты в статье (правки от Mirai будут синими, мои - фиолетовые, а YouHaveTrouble - зеленые):
per-worlds.yml
parrots-are-unaffected-by-player-movement: true (скорее всего оптимизирует ИИ попугаев, которые теперь не будут сбрасываться с плеча после движения игроков. эффект сравним с чест-кет-детекшн и арроу-коллизион)
item-frame-cursor-update-interval: 20 (делает проверку обновления курсоров в карте менее частым, что в теории может снизить нагрузку)
item-frame-cursor-limit: 64 (вам серьезно нужно 128 отметок на карте? Это не повредит игре, но нагруз в теории снизит. А еще повысит ФПС игрокам, если кто-то решит сделать слишком много меток)
fix-climbing-bypassing-cramming-rule: true (в душе не чаю что делает эта настройка. из того что я понял - отключает отключение проверки на переполнение лимита мобов в 1 блоке для каких-то ентити)
delay-chunk-unloads-by: 7s (значение в Mirai - 5, но я не думаю, что 2 секунды сильно повредят, но для серверов, где у игроков есть элитры - настройка довольно полезная)
keep-spawn-loaded: false (отключает вечную прогрузку чанков в пустых мирах)
keep-spawn-loaded-range: 2 (если вы хотите, чтобы мир всё же был загружен, но не хотите, чтобы в этих мирах происходило много активности. Зачем кому-то вообще 10 загруженных чанков в пустом мире?)
zombies-target-turtle-eggs: false (теоретически может снизить нагрузку от зомби, т.к. они больше не будут агриться на яйца черепах)
spigot.yml
hanging-tick-frequency: 200 (увеличивает промежуток между проверками состояния объектов навроде рамок и карт)
purpur.yml
villager: lobotomize.enabled: true (включать рекомендуется только если от жителей сервер начинает гореть! Почти полностью отключает ИИ жителей)
pufferfish.yml
Немного лимитов жизни для ряда бесполезных ентити. может быть полезно.
entity_timeouts:
SNOWBALL: 200
EGG: 200
LLAMA_SPIT: 40
FIREBALL: 100
DRAGON_FIREBALL: 100


Также хотелось бы, чтобы некоторые значения из статьи были пересмотрены, т.к. они кажутся ну уж слишком радикальными... (старые значения будут красными, а новые - зелеными)
merge-radius:
item: 5.0 exp: 10.0

merge-radius:
item: 4.5 exp: 8.75

(Старые значения слишком сильно ломают ванильную механику стака предметов и в то же время не приносят импакта, который бы оправдывал ломание механик)
max-tnt-per-tick: 5-25*
max-tnt-per-tick: 10-50*
(Я не думаю, что TNT настолько сильно способны навредить серверу на новых версиях, чтобы столь сильно урезать их функционал. Тесты показали, что если настройка optimize-explotions: выставлена на true, то взрывы не приносят практически никаких ощутимых лагов. Возможно на картошках и будут лаги, но точно не на нормальных машинах)
villager:
brain-ticks: 24*

villager:
brain-ticks: 4-12*

(Значение работы интеллекта жителей раз в 24 тика делает жителей весьма медленными, и даже заторможенными. Довольно плохо влияет на восприятие)
 
Последнее редактирование:
blackgrandstyle обновил(а) ресурс ✅ Современная оптимизация современных серверов ✅ новой записью:

2.4

- Некоторые настройки изменены и добавлены по предложению. Overtime, спасибо!
- Добавил рекомендации для прочтения в конец статьи.

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Узнать больше об этом обновлении...
Объединено

Хотелось бы добавить немного оптимизированных значений от меня, разраба Mirai и из статьи YouHaveTrouble, которые не упомянуты в статье (правки от Mirai будут синими, мои - фиолетовые, а YouHaveTrouble - зеленые):
per-worlds.yml
parrots-are-unaffected-by-player-movement: true (скорее всего оптимизирует ИИ попугаев, которые теперь не будут сбрасываться с плеча после движения игроков. эффект сравним с чест-кет-детекшн и арроу-коллизион)
item-frame-cursor-update-interval: 20 (делает проверку обновления курсоров в карте менее частым, что в теории может снизить нагрузку)
item-frame-cursor-limit: 64 (вам серьезно нужно 128 отметок на карте? Это не повредит игре, но нагруз в теории снизит. А еще повысит ФПС игрокам, если кто-то решит сделать слишком много меток)
fix-climbing-bypassing-cramming-rule: true (в душе не чаю что делает эта настройка. из того что я понял - отключает отключение проверки на переполнение лимита мобов в 1 блоке для каких-то ентити)
delay-chunk-unloads-by: 7s (значение в Mirai - 5, но я не думаю, что 2 секунды сильно повредят, но для серверов, где у игроков есть элитры - настройка довольно полезная)
keep-spawn-loaded: false (отключает вечную прогрузку чанков в пустых мирах)
keep-spawn-loaded-range: 2 (если вы хотите, чтобы мир всё же был загружен, но не хотите, чтобы в этих мирах происходило много активности. Зачем кому-то вообще 10 загруженных чанков в пустом мире?)
zombies-target-turtle-eggs: false (теоретически может снизить нагрузку от зомби, т.к. они больше не будут агриться на яйца черепах)
spigot.yml
hanging-tick-frequency: 200 (увеличивает промежуток между проверками состояния объектов навроде рамок и карт)
purpur.yml
villager: lobotomize.enabled: true (включать рекомендуется только если от жителей сервер начинает гореть! Почти полностью отключает ИИ жителей)
pufferfish.yml
Немного лимитов жизни для ряда бесполезных ентити. может быть полезно.
entity_timeouts:
SNOWBALL: 200
EGG: 200
LLAMA_SPIT: 40
FIREBALL: 100
DRAGON_FIREBALL: 100


Также хотелось бы, чтобы некоторые значения из статьи были пересмотрены, т.к. они кажутся ну уж слишком радикальными... (старые значения будут красными, а новые - зелеными)
merge-radius:
item: 5.0 exp: 10.0

merge-radius:
item: 4.5 exp: 8.75

(Старые значения слишком сильно ломают ванильную механику стака предметов и в то же время не приносят импакта, который бы оправдывал ломание механик)
max-tnt-per-tick: 5-25*
max-tnt-per-tick: 10-50*
(Я не думаю, что TNT настолько сильно способны навредить серверу на новых версиях, чтобы столь сильно урезать их функционал. Тесты показали, что если настройка optimize-explotions: выставлена на true, то взрывы не приносят практически никаких ощутимых лагов. Возможно на картошках и будут лаги, но точно не на нормальных машинах)
villager:
brain-ticks: 24*

villager:
brain-ticks: 4-12*

(Значение работы интеллекта жителей раз в 24 тика делает жителей весьма медленными, и даже заторможенными. Довольно плохо влияет на восприятие)

Спасибо, добавил в статью )
Могу высказаться только насчет последнего - такой тик жителей начинает работать только при лагах сервера (когда ТПС уходит ниже значения, указанного в lagging-threshold).
 
Назад
Сверху Снизу