• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » [TrinityCore] Help » Загрузка ЦП 100%
Загрузка ЦП 100%
Bookkc
Капрал
ОС Windows x64

Ядро грузит проц постепенно на 100% (где то при 20 людях)

Проц Intel Core 2 Duo 2,7GhZ

Прикол в том что когда с сервера все выходят то загрузка проца остается на уровне 100%. Помогите решить эту проблему, а ??? в чем может быть проблема то ???
Сообщение # 1 написано 04.06.2018 в 22:34
p620
Маршал
Причин может быть много. Нагрузка падает хотя бы со временем при нулевом онлайне? Ядро стоковое с оф-репо? Если да, то что за версия (master / 3.3.5)?
Сообщение # 2 отредактировано p620 - Понедельник, 04.06.2018, 23:26
Bookkc
Капрал
Загрузка вообще не падает даже при 0 игроков.

Ядро старое, но очень ценное для меня... интересует момент, куда хоть копать то ? и какие варианты могут быть ? и почему так ???
Сообщение # 3 написано 05.06.2018 в 08:40
p620
Маршал
Подобные проблемы наиболее показательны для ошибок в реализации пулов потоков. Учитывая что ядро старое, за это скорее всего там отвечает ACE, однако из официальных веток эта библиотека была исключена несколько лет назад. Кроме того, Ваш процессор поддерживает всего два аппаратных потока, что, при условии старого ядра и/или неправильной настройки сборки может приводить к большому оверхеду за счет переключения контекстов программных потоков при условии значительного превосходства их числа над числом аппаратных (2). Впрочем, это менее вероятный ответ. Нормальным будет подцепка профилировщика и отслеживание источника нагрузки без гадания на чайной гуще.
Сообщение # 4 написано 05.06.2018 в 15:38
Bookkc
Капрал
а более  подробней можно? как действовать дальше ? что делать ? как быть ???

дай свои контактные данные, если можно подробней поговорим

Добавлено (05.06.2018, 20:16)
---------------------------------------------
заметил, что если никого нет на сервере, пишется лог :

Код
2018-06-05 20:14:46 Aura 32199 (16) now is remove mode 1
2018-06-05 20:14:46 Aura 16 now is in use
2018-06-05 20:14:46 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:46 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:46 Spell: Effect : 6
2018-06-05 20:14:46 Spell: Aura is: 19
2018-06-05 20:14:46 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:46 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:46 Aura 19 now is in use
2018-06-05 20:14:46 Spell: Effect : 6
2018-06-05 20:14:46 Spell: Aura is: 17
2018-06-05 20:14:46 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:46 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:46 Aura 17 now is in use
2018-06-05 20:14:46 Sending SMSG_SPELL_START id=45189
2018-06-05 20:14:46 MMAP:unloadMap: Asked to unload not loaded navmesh map. 5802931.mmtile
2018-06-05 20:14:46 Loading map Data/maps/5802931.map
2018-06-05 20:14:46 VMAP loaded name:The Sunwell, id:580, x:29, y:31 (vmap rep.: x:29, y:31)
2018-06-05 20:14:46 MMAP:loadMapData: Error: Could not open mmap file 'Data/mmaps/580.mmap'
2018-06-05 20:14:47 Aura 45769 (54) now is remove mode 0
2018-06-05 20:14:47 Aura 45769 (251) now is remove mode 0
2018-06-05 20:14:47 Aura: construct Spellid : 45769, Aura : 54 Duration : -1 Target : 1 Damage : 5
2018-06-05 20:14:47 Aura 54 now is in use
2018-06-05 20:14:47 Spell: 45769 with Aura 54 added to creature (GUIDLow: 1954 Entry: 24850)
2018-06-05 20:14:47 Aura: construct Spellid : 45769, Aura : 251 Duration : -1 Target : 1 Damage : -20
2018-06-05 20:14:47 Aura 251 now is in use
2018-06-05 20:14:47 Spell: 45769 with Aura 54 added to creature (GUIDLow: 1954 Entry: 24850)
2018-06-05 20:14:47 Creature 24850 enters evade mode.
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=45189
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=45189
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 19
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:47 Aura 19 now is in use
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 17
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:47 Aura 17 now is in use
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 19
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:47 Aura 19 now is in use
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 17
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:47 Aura 17 now is in use
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=45189
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 19
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:47 Aura 19 now is in use
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 17
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:47 Aura 17 now is in use
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 19
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:47 Aura 19 now is in use
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 17
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:47 Aura 17 now is in use
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 19
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:47 Aura 19 now is in use
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 17
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:47 Aura 17 now is in use
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=18950
2018-06-05 20:14:47 Sending SMSG_SPELL_GO id=18950
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 19
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 19 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (19) now is remove mode 1
2018-06-05 20:14:47 Aura 19 now is in use
2018-06-05 20:14:47 Spell: Effect : 6
2018-06-05 20:14:47 Spell: Aura is: 17
2018-06-05 20:14:47 Aura: construct Spellid : 18950, Aura : 17 Duration : -1 Target : 1 Damage : 100000
2018-06-05 20:14:47 Aura 18950 (17) now is remove mode 1
2018-06-05 20:14:47 Aura 17 now is in use
2018-06-05 20:14:47 Sending SMSG_SPELL_START id=45189
2018-06-05 20:14:48 Sending SMSG_SPELL_GO id=45189
2018-06-05 20:14:48 Spell: Effect : 2
2018-06-05 20:14:48 deal dmg:517 to health:69860 
2018-06-05 20:14:48 Sending SMSG_SPELL_START id=32199
2018-06-05 20:14:48 Sending SMSG_SPELL_GO id=32199
2018-06-05 20:14:48 Spell: Effect : 6
2018-06-05 20:14:48 Spell: Aura is: 16
2018-06-05 20:14:48 Aura: construct Spellid : 32199, Aura : 16 Duration : -1 Target : 1 Damage : 90
2018-06-05 20:14:48 Aura 32199 (16) now is remove mode 1
2018-06-05 20:14:48 Aura 16 now is in use
2018-06-05 20:14:48 Sending SMSG_SPELL_START id=45189
2018-06-05 20:14:48 Sending SMSG_SPELL_GO id=31723
2018-06-05 20:14:48 Sending SMSG_SPELL_GO id=31723


Я так понимаю что НПЦ сами по себе что то делают (кастуют и т.д.) как сделать что б такого не было ?
Сообщение # 5 написано 05.06.2018 в 20:16
p620
Маршал
Цитата Bookkc ()
а более  подробней можно? как действовать дальше ? что делать ? как быть ???
Как я уже писал:
Цитата p620 ()
Нормальным будет подцепка профилировщика и отслеживание источника нагрузки без гадания на чайной гуще.

Цитата Bookkc ()
Я так понимаю что НПЦ сами по себе что то делают (кастуют и т.д.) как сделать что б такого не было ?

На настоящий момент я не могу даже гарантировать, что это некорректное поведение. Развернутого решения у меня на руках нет, а семантический поиск по "сырому" репозиторию на GitHub по большей части не поддерживается. И даже если бы я что-то нашел, это не гарантировало бы применимость находки к Вашей неизвестной (и, как Вы утверждаете, старой) версии ядра. Могу лишь утверждать, что активность может в нормальных условиях генерироваться между не-игроками, так что, при определенных условиях реализации, даже их полное отсутствие никак не помешает происходить соответствующим событиям (в т.ч. и, возможно, тем, отчет о которых Вы приводили в журнале выше) в мире. Я уже давно не занимался TrinityCore'ом и не могу сходу (по памяти) рассказать, как там устроен этот элемент архитектуры. Вы можете попробовать дождаться активных на данный момент разработчиков, чтобы они Вас проконсультировали, либо начать собственное расследование. Так или иначе, учитывая, что в Вашем случае отсутствует очевидно некорректное поведение (например лайфлок, генерирующий холостую нагрузку), следует быть готовым к тому, что имплементация желаемых Вами изменений в правилах функционирования игровой механики будет скорее всего не самым легким предприятием, требующим уверенных знаний в соответствующих областях. Если у Вас они отсутствуют - не исключается необходимость в наемном труде.
Сообщение # 6 написано 05.06.2018 в 21:38
Ranege
Маршал
Тоже не вникал точно в детали, как устроены нпц, привязка и отвязка к гридам, но вроде логирование действий нпц - это норма, кто-то что-то делает, это масшатбный игровой мир, где может всё происходить и как каждая часть устроена - нужно тоже вникать расследовая.

Если подозреваешь в этом проблема и любишь разные извращенные способы, то сделай бэкап базы игровой мира, грохни содержимое местоположений существ, а также объектов и всего-всего что можно придумать(некоторый фан). Скриптовку тоже можно убить кстати. Ну и посмотреть собственно результат в игре. Кстати за потоки, пулы и т.д отвечает конфиг сервера вроде, там можно ставить разные цифарки и могут быть как норм, так и не норм последствия. Всё сказал примерно, точно вникать и утверждать гарантированно что-либо желания нет.
Сообщение # 7 написано 05.06.2018 в 23:27
Bookkc
Капрал
Да логирование НПЦ это нормально, но не когда на сервере 0 игроков в он выгружает проц на 100%)

А к примеру, подкинь пару настроек которые отвечают за оптимизацию и т.д. ? имеется введу за выгрузку проца?

может где то есть способ выгрузки всего ? что бы сервер был в таком состоянии как при первом запуске ???

Добавлено (06.06.2018, 16:11)
---------------------------------------------
Заметил, на тестовом сервере, зашел в 5 окон в инст, побегал там, вышел, нагрузка была 10-15%, по сути по миру небегал, в логах работали босы которые в данном инсте.

Зашел каждым из них и прописал in un all, в итоге все инсты сбросились, и нагрузка упала до 0. Но проблема не только в инстах, может есть какие то команды что бы сбрасывать ивенты во всем мире ? ивенты объектов и нпц ?

Сообщение # 8 написано 06.06.2018 в 16:11
Ranege
Маршал
По поводу конфига, так так кол-во потоков для работы именно с MySQL - WorkerThreads, SynchThreads.

Я предполагаю, что дело в скриптовке и загруженности процессора, а именно вопрос - у тебя до 100% загружено только одно ядро или два?

Есл одно - так нужно чтобы ядро работало на всех ядрах, тогда и проблем меньше будет.

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

Вполне вероятно, что скриптовка грузит проц. Попробуй очисти таблицы: smart_scripts, spell_script_names ( не забудь про бэкап), перезагрузи сервер и проверь тот же инст, грузит ли также проц или нет.
Сообщение # 9 написано 06.06.2018 в 23:15
Bookkc
Капрал
Загружены два ядра.

Ну даже если и скриптовка грузит . то почему она не перестает грузить тогда, когда никого нет на сервере... как решить эту траблу ?

По поводу таблиц отпишу позже... что вышло
Сообщение # 10 написано 07.06.2018 в 10:04
kvipka
Сержант
тут скорее другая проблема.
Неверная в корне структура гуайдишек. Во-первых она там еще старая, в виде uint64, и без безопасных итераторов. В результате, большой объем данных обрабатывается в режиме нонстопа, сервер просто в холостую "до бесконечности" прокручивает все переборки и итераторы. Вот оттуда и идет нагрузка на ЦП.
Кроме того, ядро и сейчас не оптимизировано толком, чтобы разделение на потоки давало какую-либо пользу в снижении нагрузки, а уж про 2011 год нечего и говорить.

Лучше уж возьми оттуда свои скрипты, и все, что тебе дорого, и используй материал на свежем тк. Старый код даже никто смотреть не будет, хоть и жаль конечно, не помочь тебе.
Сообщение # 11 написано 07.06.2018 в 13:35
Bookkc
Капрал
Ну а варианты типа костылей, что бы не прокручивало ? какой то "стоп" сделать этому всему...?

Опыта перенести всё просто нет, да и не думаю что это получится... хотелось бы найти решение на это ядро, пусть даже не самое верное но что бы оно работало:-(

Прошу помощи...
Сообщение # 12 отредактировано Bookkc - Четверг, 07.06.2018, 13:58
p620
Маршал
Цитата Bookkc ()
Ну а варианты типа костылей, что бы не прокручивало ? какой то "стоп" сделать этому всему...?

Полагаю, Вы слабо себе представляете внутреннее устройство подобных программ, потому предложу аналогию, которая, вероятно, поможет Вам понять суть собственной просьбы:
Цитата
Подскажите, как отключить печень, чтобы остальное тело продолжило нормально работать?

Благо TrinityCore - не человеческий организм, и здесь действительно одному человеку под силу "отключить печень" без вреда для всей системы, но для этого нужно приличное количество работы провести, адаптируя остальные подсистемы к изменениям, да еще и вслепую, учитывая отсутствие информации о Вашем ядре. Как я уже говорил, в Вашей ситуации наиболее правильным выбором будет наем программиста, который сможет исполнить Вами задуманное, потому как простого способа сделать "то - не знаю что" не существует, если только Вам не повезет, и здесь не окажется человека, сталкивавшегося с точно такой же проблемой и благополучно решившего ее в прошлом.
Сообщение # 13 написано 07.06.2018 в 17:54
Bookkc
Капрал
я думаю не стоит сравнивать кое что с пальцем... 

Если там обрабатываются данные в режиме нонстопа, то почему не сделать так что бы эти данные перестали обрабатываться ? они же не обрабатываются когда нет людей и сервер нормально работает... почему не сделать так что бы эти потоки данных останавливали обработку ?
Сообщение # 14 написано 07.06.2018 в 21:14
kvipka
Сержант
а это, в большинстве случаев уже от тебя зависит.

Например, все знают VIP-систему, особенно если через госсипку она. Так вот, у себя свою систему я писал сам, и в ней запрос к бд, на кол-во коинов у аккаунта (при логине даже не аккаунта, а просто игрового чара в мир) - только один. Потом уже все работает "на ходу", и в случае покупке чего-либо игроком, еще запрос 1. Но нет больше селектов из бд, и нет спама и нет нагрузки, как и привязки к сессиям.
На всех мне известных фанах, где есть випка, повторюсь, НА ВСЕХ (мне известных) - стоит банальный скрипт, где идет селект к бд, к тому же без асинхронного соединения в отдельном безопасном потоке.

Что это означает, что я могу запустить на такой сервак бота, что просто до бесконечности начнет кликать и открывать госсипку, в результате чего SQL-сервер упадет, либо world-сервер раньше.

Я это привел просто как пример некачественной реализации одного из скрипта на сервере. Тоесть, помимо того кода самого ядра, что и сейчас то не блистает, а уж в 2011 то... есть еще большая вероятность подобных неоптимизированных элементов в доп.скриптах, из-за чего как раз может и есть привязанность у тебя к этому старому ядру. На это же подают признак и те логи, что ты скинул. Ну например, ни один игрок не вошел в локацию, видимость не прогружена, гриды соответственно тоже, а скрипты отдельных нпц почему-то активны (хотя не должны, с точки зрения сохранения ресурсов). Соответственно, тут может возникнуть минимум 2 утечки ресурсов :
- сам скрипт, чтобы он там не делал
- зависимость на "рабочее состояние", например :
Для работы скрипта необходимы те же гриды, тк какой-то нпц например должен суммонить кого-то. Так как суммонить некуда (тупо нет земли под ногами), то кто-то например поставил от краша проверку, в результате которого спавн откладывается для следующего тика-апдейта сервера, а задача переносится наперед. В следующем тике, тоже самое... и так до бесконечности. А если к этому еще приписать другое условие, ну например, если нпц не имеет таргета (ну тот же его спавн), то происходит ивейд.
В таком случае, дублироваться при апдейте уже будет не только поиск грида и перенос задачи в будущий апдейт, но и сам скрипт, может и два и три и тд.

В общем, вариантов, почему подобное происходит - бесконечное число. И даже если ты выложишь сорсы, в надежде помочь, это тоже не поможет, тк перебирать все древнее ядро тоже никто не будет. Ну без обид, это просто нерационально.
Сообщение # 15 написано 07.06.2018 в 21:59
Bookkc
Капрал
kvipka, да я понимаю что никто не будет этим заниматься, я сам готов поковырять то что уже есть у меня. я понимаю что работы много и от части она бессмысленна. но если бы я знал в чем причина я бы своими силами исправил то что есть. почему нельзя остановить все скрипты? или это невозможно сделать?
Сообщение # 16 написано 08.06.2018 в 10:12
Tehnokrat011
Капрал
Отвечая на ваш вопрос, что можно с кастами сделать - в логе есть четкие указания на спеллы и мобов, почему бы не начать с этого.

npc entry : 24850 - http://www.wowhead.com/npc=24850/kalecgos#comments
посмотреть скрипт моба, привязанный в creature_template, поле ScriptName, AIName, поля spell1, spell2 и т.д

посмотреть по ядру и таблицам, просто поиском банальным, кто кастует спеллы 18950

Вообще причина врятли в этом, потому что это обычное поведение мобов, хотя если игроков нет на сервере, возможно нет выгрузки инстов (старый баг еще с мангоса), потому что все касты происходят на карте инста Sunwell Plateau, т.к ядро как вы говорите старое, там просто нет кучи важных систем, что используются сейчас, в плане работы грида, карт, видимости и загрузки объектов.

А то - о чем вы говорите, "остановить потоки, отключить какие-то части", увы, свидетельствует о том, что у вас просто нет знаний заниматься ядром. Вы не понимаете даже элементарных основ как это устроено. Остановить все скрипты можно, очистив поле ScriptName, AIName у всех мобов

sql-запрос:
Код
UPDATE creature_template SET ScriptName='', AIName='';

либо удалить скрипты из ядра.
Disassembling, Intercepting/Hooking, Sniffing, Cryptography, Cracking - D.I.S.C.C )
IDA - is the best disassembler, SoftICE - is good debugger :) ©
Programming, Hacking, Reverse Engineering - is everything!
Да иди ты в ...регистр eax )
The world is not enough....
Сообщение # 17 написано 08.06.2018 в 10:36
Lorder
Destro lifer
Bookkc, слишком мало информации предоставлено для того чтобы люди смогли вам помочь.
Укажите информацию касаемо версии вашей ОС,  версии игрового фреймворка (если возможно) и перечислите какие библиотеки использует ваш игровой фреймворк посмотреть их можно в папке dep.
Также неплохим дополнением был бы конфигурационный файл вашего ядра и логи работы серверов(MySQL, WorldServer,AuthServer).
После чего, есть вероятность того, что вам смогут дать реальное решение вашей проблемы.

Без  подробной информации можно бесконечно рассуждать на тему а-ля "Проблема в потоках..", "Удалите скриптовку, может быть прокатит" или "Вот у меня такая есть вещь, что ну вообще не нагружает систему, я такой замечательный, что реализовал её, а вы подумайте как реализовать её так же, может быть и поможет, но это не точно" и тд.
Сообщение # 18 отредактировано Lorder - Среда, 13.06.2018, 10:02
Форум » TrinityCore » [TrinityCore] Help » Загрузка ЦП 100%
  • Страница 1 из 1
  • 1
Поиск: