Один день из жизни сервера или "ОДМИН ЛОХАИТ!!" - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > Разное / Other > Курилка / Yak floor

Курилка / Yak floor
Свободное общение, рассуждения на любые интересные вам темы.

Ответ
Опции темы
Непрочитано 12.04.2015, 10:31   #1
Аватар для n3k0nation
Antihero

Автор темы (Топик Стартер) Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

В один прекрасный день (не такой уж и прекрасный, так как до этого было несколько дней безудержного веселья, но это уже другая история), мне написал заказчик, мол, так и так, на замесах игроки ужасно лагают, есть очень сильное падение ФПС и вообще, все плохо, когда 5 кланов сталкиваются вместе.
Ну бывало и хуже, поэтому не долго думая, я взялся за задачу, и вот уже через полчаса, был написан сбор статистики по отправляемым и принимаемым пакетам. Все это дело поставилось на лайв во время очередного планового рестарта и на несколько дней все забыли про это, так как началась новая порция безудержного веселья с заказчиком и его сервером.
Через некоторое время, заказчик вспомнил о проблеме, так как некоторые кланы уже начали уходить с сервера. Вооружившись собранной статистикой и потратив час на ее визуализацию + фильтрацию, был получен такой график:
прием: https://dl.dropboxusercontent.com/u/62505455/rcv1.png
отправка: https://dl.dropboxusercontent.com/u/62505455/snd1.png
Ось Х - временная шкала, ось У - количество пакетов.

Сразу оговорюсь, что сервер базируется на l2j like сборке, поэтому проблема актуальна, скорее всего на всех сборках такого вида :)

Немного прифигев от увиденного (рейт отсылки StatusUpdate выше CharInfo более чем в 2 раза, madness!), я стал думать, что делать. На графике ясно видно всплеск трафика, конечно же понятно, что в моменты всплеска происходили самые жесткие замесы между игроками. Вывод напрашивался сам - уменьшить количество броадкаста пакета StatusUpdate и жестко контроллить одиночную отсылку данных только по изменению каких-либо параметров персонажа.
Окей, сказано - сделано.

Идем в пакет StatusUpdate и смотрим трейс вызова конструктора. Тааакс, видим то что есть основные броадкаст методы, которые перегружаются в классах-наследниках L2Character (что уже радует, так как не надо бегать по всему коду), ну и конечно же видим одиночные посылки статуса во всяких богомерзких хандлерах и т.д.
В броадкасте нифига ничего не контролируется, логика тупа, как носок сапога - дернули метод, отослали всем игрокам в радиусе. Ну окей. Копаемся дальше и находим очень интересный код, который пытается контролить отсылку статуса (правда почему-то для пати, ну да фиг с этим), немного изучив код, понимаем, что его писали какие-то маньяки-индусы с корнями китайских программистов. Не долго думая, я наштопал свой, достаточно простой, контроллер - вычисляем процентное количество текущих показателей персонажа с поправкой на размер окошка в игре (что было как-то странно сделано в том самом контроллере) и запоминаем его после каждого вычисления (не забыв перед этим посмотреть, было ли прошлое значение таким же, если было, то в сад отправку пакета), в принципе, почти тоже самое, что и было в изначальном контроллере, но без индусокода.
Залив изменения и отчитавшись заказчику, я уже было решил, что задача выполнена, но не тут то было. По логике, это избавило бы людей от множества повторных пакетов на фарме мобов/РБ, но никак не избавило бы от кучи пакетов в массовом замесе (пакет то броадкастится всем в зоне видимости!).
Решение было найдено довольно быстро. По сути, всем окружающим игрокам нафиг не нужен этот пакет, он требуется только тем игрокам, у которых текущий моб в таргете, плюс отметается сразу посылка от игрока игроку (за исключением пати). Просто сохраняем игроков, которые взяли нашего актера в таргет, в блокирующей коллекции и потом делаем рассылку только по этим игрокам. Гениально! Обычно размер такой коллекции довольно скромный :)

Собственно графики, которые включают предыдущие (что бы сразу можно было сравнить):
отправка: https://dl.dropboxusercontent.com/u/62505455/snd12.png

Почему только отправка? Потому-что, в данном случае, правилось именно по ней, да и статья имеет заголовок об одном дне :)

P.S: графики намеренно оставил в виде ссылок, т.к. каждая пикча довольно тяжелая (по 1 мб)
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 12.04.2015, 10:54   #2
Пользователь

По умолчанию Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Pointer*Rage, интересно было почитать, спасибо.

п.с. 90% разработчиков сказали бы "падает фпс? пусть новое железо купят", и даже не искали бы возможную причину.
Influence вне форума Ответить с цитированием
Непрочитано 12.04.2015, 10:58   #3
Аватар для n3k0nation
Antihero

Автор темы (Топик Стартер) Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Цитата:
Сообщение от Influence Посмотреть сообщение
Pointer*Rage, интересно было почитать, спасибо.

п.с. 90% разработчиков сказали бы "падает фпс? пусть новое железо купят", и даже не копали бы возможную причину.
Пожалуйста, у меня еще много историй из жизни

На самом деле мне изначально было ясно почему ФПС падает (т.к. сеть и рендеринг в клиенте работают в одном потоке), нужно было лишь найти бяку, из-за которой рейтинг трафика зашкаливает. Да и заказчик обмолвился словом, что другой разработчик исправил это дело - заменой сетевого движка (хренасе радикально, как поставить на жигули колеса от камаза) и отключением эффектов сосок, что мне очень не хотелось делать.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 12.04.2015, 11:11   #4
Аватар для moveton
Супер-модератор

По умолчанию Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Пожалуйста, у меня еще много историй из жизни

На самом деле мне изначально было ясно почему ФПС падает (т.к. сеть и рендеринг в клиенте работают в одном потоке), нужно было лишь найти бяку, из-за которой рейтинг трафика зашкаливает. Да и заказчик обмолвился словом, что другой разработчик исправил это дело - заменой сетевого движка (хренасе радикально, как поставить на жигули колеса от камаза) и отключением эффектов сосок, что мне очень не хотелось делать.
А как насчет индивидуальной конфигурации пользователей, которая позволит не броадкастить пакет магикскиллюз при включении соулшотов?
moveton вне форума Отправить сообщение для moveton с помощью ICQ Отправить сообщение для moveton с помощью Skype™ Ответить с цитированием
Непрочитано 12.04.2015, 11:14   #5
Аватар для n3k0nation
Antihero

Автор темы (Топик Стартер) Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Цитата:
Сообщение от moveton Посмотреть сообщение
А как насчет индивидуальной конфигурации пользователей, которая позволит не броадкастить пакет магикскиллюз при включении соулшотов?
Хорошая вещь, как и конфигурация отключения отображения трейдеров Очень не плохо бустит работу клиента (если конечно в сервере все держится на кноулистах и многопоточность почти не используется).
На самом деле, как видно на графике, MagicSkillUse имеет более или менее приемлемый рейт.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 12.04.2015, 11:33   #6
Мастер

По умолчанию Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Гж программос) Продолжение будет ?
Retribution вне форума Отправить сообщение для Retribution с помощью Skype™ Ответить с цитированием
Непрочитано 12.04.2015, 11:37   #7
Аватар для n3k0nation
Antihero

Автор темы (Топик Стартер) Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Цитата:
Сообщение от Retribution Посмотреть сообщение
Гж программос) Продолжение будет ?
Продолжение "дней"? Возможно, если все сложится удачно в следующем месяце, но это если же забегать вперед. Если отматывать назад, то могу написать еще какую-нибудь кулстори.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 12.04.2015, 11:37   #8
Пользователь

По умолчанию Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Цитата:
Сообщение от Retribution Посмотреть сообщение
Гж программос) Продолжение будет ?
Эму нужно свой блог продвигать
Интересно было бы почитать что то по мемори ликам, а то бывали приколы что утечка составляла около 10-30мб в час, а потом после перезагрузки сервера вообще пропадала, или в один прекрасный момент после сборки мусора так же пропадала(хотя наблюдалась достаточно долгое время)
Да и вообще любую полезную историю было бы интересно услышать

Последний раз редактировалось Influence; 12.04.2015 в 11:39. Причина: Добавлено сообщение
Influence вне форума Ответить с цитированием
Непрочитано 12.04.2015, 12:13   #9
Пользователь

По умолчанию Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Спасибо, познавательно!
Drag0N вне форума Ответить с цитированием
Непрочитано 12.04.2015, 12:35   #10
Аватар для Gaikotsu
Герой

По умолчанию Re: Один день из жизни сервера или "ОДМИН ЛОХАИТ!!"

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
многа букав
насколько я помню, в овере (в фениксе не помню уж) по тому же принципу сделана рассылка StatusUpdate - вычисления размеров баров хп/мп и т.д. и отправка пакета только если реально визуально будет видно изменение текущего значения, да и рассылка так же только тем кто реально это изменение может увидеть - выбравшие в цель и т.д.

З.Ы. правда в ГоД приходится и тупо всем в определенном радиусе данный пакет бродакастить в случаях когда объектом является моб - там то полоску хп над тушкой моба видно всем.
Gaikotsu вне форума Ответить с цитированием
Ответ

Метки
no way!, индусо-китайский код, маньяки, моветон няшка, шта ти дилаиш


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ: Установка и настройка сервера Rebellion ilyxa Lineage II 67 04.04.2013 21:16
Руководство по поднятию сервера AiON на Linux платформе sotariz Документация 26 27.07.2011 07:05
Компиляция и базовая настройка сервера MaNGOS (3.0.9) PROGRAMMATOR Документация 125 12.04.2011 13:43
ID предметов в 2.2.3 MMd Документация 1 28.12.2009 01:03
Установка сервера с нуля ! otmarozok Call of Duty 4 8 30.09.2008 13:38


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 10:24. Часовой пояс GMT +3.

Вверх