Лаги сервера

INCOGNITO

Величайший
Проверенный
Сообщения
580
Розыгрыши
0
Репутация
889
Реакции
296
Баллы
1 523
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
l2j-dev
Добрый день . Уже не знаю к кому обратится, решил написать сюда . Возможно кто то наведет хотя бы на мысль куда смотреть и в какую сторону двигаться .
Суть проблемы заключается в том, что сервер стабильно работает до определенного момента ( момент этот он выбирает сам , связать его с чем то не можем ) , через N-ое время в игре наблюдаются "откиды" персонажа кидает его вперед - назад ( чаще назад ) . Ранее уже такое случалось, помогало увеличение параметров настройки БД . В последнее время проблема вернулась, помогает только рестарт. ( с сервером ничего не делали , никаких апдейтов существенных не было, что могло бы повлиять на его работы - единственное что было , это перенос чаров с одной БД на другую ( мерж ) Проблема динамическая, может случится раз в неделю , а может раз в сутки. Бд весит в запакованном виде 90 мб . Онлайн 400-500 окон . ( 200-300 уников) Возможно кто-то сталкивался с проблемой, и знает её решение . Готовы заплатить за действительно решение проблемы . Сервер стоит на выделенном сервере нагрузки на дедик составляют не более 30% . ОЗУ выделено с головой .
 
Ну тогда только профайлер поможет скорее всего.
У нас помнится давным-давно примерно такая проблема периодически по вечерам в большой онлайн возникала - начинались иногда у игроков проблемы с передвижением.
Профайлер тогда показал что в такие моменты капитально забивается таскменеджер тасками, отвечающими за расчеты путей и просто не успевает считать все пути.
Виновниками тогда оказались мобы, бродящие по определенным маршрутам - у них не обрабатывалась нормально ситуация, когда они по какой либо причине не могли пройти к следующей точке своего маршрута и в итоге постоянно задалбывали сервер запросами на построение пути к этой точке.
В итоге мне тогда пришлось вобще основательно переписывать всю логику работы бродячих нпс/мобов, что в целом только на пользу в итоге пошло (например не нужны отдельные аи для подобных нпс - им может быть любой нпс с аи наследным от DefaultAI).

Сборка у меня на базе овера, сборка о которой речь тут вроде тоже на ней - может причина тоже в бродячих мобах?
 

Gaikotsu, у нас на ИЛе такая же фигня бьіла...
Только с мобами все ок, а нпс и боссьі забивали память.
Особенно гордон.

Еще бьіл костьіль с лоторейньіми боксами:
там бьіла реальная лоторея, мол за последние 24 часа мог вьіпасть только 1 айтем, или 2 другого айтема, или 5 третьего.
Естественно бьіла таблица для просмотра через альт+б.
И вот разраб сделал хитрожопую калькуляцию, и когда несколько человек открьівало их, то начинались лаги у всех)
 
Еще бьіл костьіль с лоторейньіми боксами:
там бьіла реальная лоторея, мол за последние 24 часа мог вьіпасть только 1 айтем, или 2 другого айтема, или 5 третьего.
Естественно бьіла таблица для просмотра через альт+б.
И вот разраб сделал хитрожопую калькуляцию, и когда несколько человек открьівало их, то начинались лаги у всех)
это же как такое надо написать, чтобы вызывать лаги сервера?
у меня нечто подобное тоже есть для некоторых предметов в лотерее которую мы ежегодно проводим на новый год - от рестарта до рестарта там может выпасть на всем сервере не более определенного количества предметов - по сути просто атомик счетчики в каждой из подобных наград, уменьшающиеся на 1 при каждом получении такой награды, ну и простейшая проверка при розыгрыше, когда выпадает предмет, типа "если значение счетчика достигло 0 - это больше не дается".

простейший код по сути в роллинге наград
Java:
                    if (reward.getSLimit() > 0)
                    {
                        if (reward.getCounter() < 1L)
                        {
                            player.sendMessage("Награды нет.");
                            return 0;
                        }

                        reward.decCounter();
                    }
 
Последнее редактирование:
я решив проблему избавился от некоторого мусора в ядре да и от javolution и вот уже 4 года нет проблем , в том году был онлайн в почти 500 HWID и проблм не было причем ВПска на 8 ГБ
 
тогда есть второй вариант
когда начинаются лаги
бежите и в чат пишите /loc
если хуз не меняется, думаю догадаетесь что смотреть=)
бред

Ответ уже дали, профайлер в помощь. А нет слушайте дальше и тестируйте проблему командой /loc
 
бред

Ответ уже дали, профайлер в помощь. А нет слушайте дальше и тестируйте проблему командой /loc
Я пишу о том что профайлер не скажет.
Если завис 1 перс, нагрузка на сервер 5%, по памяти все ок, что профайлером смотреть собрался?
 
по мобам профайлер, да конечно сможет дать общую картину да и в принципе выкатить класс который грузит, но при поисках путей ЦПУ в пустоту зашкалит.
я решив проблему избавился от некоторого мусора в ядре да и от javolution и вот уже 4 года нет проблем , в том году был онлайн в почти 500 HWID и проблм не было причем ВПска на 8 ГБ
500 хвидов ток на ИТ с такими данными можно сообразить с минимальными свистоперделками.
 
по мобам профайлер, да конечно сможет дать общую картину да и в принципе выкатить класс который грузит, но при поисках путей ЦПУ в пустоту зашкалит.

500 хвидов ток на ИТ с такими данными можно сообразить с минимальными свистоперделками.
опа сказал тот который на базе лыжы всуну и овер и феникс в кучу по сей день ржу
 
Отброс "назад" скорее всего связан с ValidatePostiion клиента, и в момент его выполнения при достаточной разнице в координатах клиента и сервера - происходит принудительная синхронизация. Добавьте логи в части запроса, где это происходит, и начните искать по какой причине задерживается расчет серверных координат.
Так же стоит сделать нечто вроде
3c5abbd2dc6a5ce19c5c1753c1705c74.png
что бы отследить разницу передвижения клиента и интерполяцию сервера.
 
Отброс "назад" скорее всего связан с ValidatePostiion клиента, и в момент его выполнения при достаточной разнице в координатах клиента и сервера - происходит принудительная синхронизация. Добавьте логи в части запроса, где это происходит, и начните искать по какой причине задерживается расчет серверных координат.
Так же стоит сделать нечто вроде
Посмотреть вложение 52536
что бы отследить разницу передвижения клиента и интерполяцию сервера.
Если такое происходит
Скорее всего завис GameTaskManager
То к чему я и клоню
Если хуз не меняется совсем (кроме телепорта)
Оно попросту может не отсылать updatePosition
Если прям все чары зависают, скорее всего попросту таск накрылся.
Но может дело случая, я говорю то с чем сталкивался.
 
Кстати насчет ValidatePostiion - может и в нем быть причина в периоды высокого пинга до сервера.
В большинстве сборок пинг при проверках не учитывают и может как раз таки начать кидать при его большом значении тех игроков кто достаточно быстро передвигается.
 
Последнее редактирование:
Данная проблема в этой сборке началась с 2019 года если не ошибаюсь. С ним сталкиваются большинства игроков. Несколько раз так обращался к разработчику по этой теме. При онлайне 50-70 игроков и даже меньше может лагать (хотя с интернетом все в порядке). Это начинается обычно по вечерам (не знаю с чем это связано). Возможно есть потери памяти. Но сильного нагружения нет. При 16 гб озу и 4 ядрах, максимум нагружает 15-20% и запускается за 39-40 секунд, в то же время сборка l2j-eternity если не ошибаюсь запускается при этих же параметрах с гео 14-15 секунд)
 
Данная проблема в этой сборке началась с 2019 года если не ошибаюсь. С ним сталкиваются большинства игроков. Несколько раз так обращался к разработчику по этой теме. При онлайне 50-70 игроков и даже меньше может лагать (хотя с интернетом все в порядке). Это начинается обычно по вечерам (не знаю с чем это связано). Возможно есть потери памяти. Но сильного нагружения нет. При 16 гб озу и 4 ядрах, максимум нагружает 15-20% и запускается за 39-40 секунд, в то же время сборка l2j-eternity если не ошибаюсь запускается при этих же параметрах с гео 14-15 секунд)
могу и скрины скинуть древний ноут 2 ядра 1.6 4 озу , с гео феня грузится 45 секунд так это на Вин 7, был бы линукс или дебиан было бы веселее , но сами параметры тачки и то смешны
 
Ну, меряться скоростью запуска сервера - то еще мерило :)
Ибо от много чего зависит.
Например у нас были времена когда на живом сервере запуск шел 30+ минут :)
И все из-за одного узкого места в загрузке - многие думаю знают о чем речь, хотя вряд ли сами с этим сталкивались, т.к. обычно ща сервера столько не живут, чтобы в бд накопилось так много данных, что это ощущается при загрузке серва и требовалось загрузку некоторых данных распараллеливать в несколько потоков для ускорения.
 
Последнее редактирование:
Может ядро ОС? или MySQL барахлит (лопатить конфиги надо)
 
Проблема актуальна . Есть снапшоты профайлера и т.д ищем людей которые могут помочь за $
 
Назад
Сверху Снизу