170 похожих чатов

Привет! Использую Spring Reactor и страдаю Я пытаюсь понять, как найти

горячие потоки и хоть как-то улучшить производительность.
В моем случае потоки из http-event-pool всегда "убегают", в сторону бизнес-логики, когда я просто обрабатываю результаты от webClient.
В такой ситуаций в любом профайлере я вижу горячие eventPoolы и все.
Чтобы решить проблему - должен ли я всегда решедулить результат от webClient'а на свой собственный планировщик бизнес-логики?

Как идея это вообще ок? Или вы живете как-то по-другому
Спасибо 😊

Ps. subscribeOn мне не помогал, как я понимаю из-за того что у эвент пула свой поток

11 ответов

24 просмотра

Хм, а что вы хотите профилировать? Если я правильно понимаю, то проблема в следующем: вы видите в основном свою бизнес-логику, а хотите видеть тормоза на удалённых вызовов?

Sergey-Kurenchuk Автор вопроса
Alexey Genus 😎
Хм, а что вы хотите профилировать? Если я правильн...

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

Sergey Kurenchuk
При профилировании я вижу только треды от евентлуп...

Попробуй https://www.jetbrains.com/help/idea/async-profiler.html Должно из коробки работать и показать именно работающие треды

Sergey-Kurenchuk Автор вопроса
Kirill Timofeev
Попробуй https://www.jetbrains.com/help/idea/async...

А что значит работающие треды, ведь тут другая ситуация. Треды евентпула утекают в бизнес логику. Т.е. бизнес код выполняется внутри reactor-http-nio-... треде

Sergey Kurenchuk
А что значит работающие треды, ведь тут другая сит...

в intellij profiler можно будет отфильтровать функции из фреймворка и посмотреть отдельно на вашу бизнес логику открой вкладку method list и там можно будет поискать "entry point" бизнес логики потом внизу посмотреть backtraces (откуда вызвали) и calltree (как работала сама логика) при этом справа можно выбрать или "all threads" -- тогда информация будет по всему приложению, или конкретный тред, тогда профиль будет только по нему UPD: плюс можешь попробовать https://www.jetbrains.com/help/idea/read-the-profiling-report.html#filter-call-tree, чтобы скрыть спринг вызовы из основного call tree. не уверен что так станет понятнее, но попробовать стоит

Sergey Kurenchuk
А что значит работающие треды, ведь тут другая сит...

что значит треды утекают в бизнес-логику?

Sergey-Kurenchuk Автор вопроса
Dima
что значит треды утекают в бизнес-логику?

Получается хожу сквозь webClient.результат().map(ответ->бизнес логика) В такой истории бизнес логика вы выполнится на треде евентпула

Sergey Kurenchuk
Получается хожу сквозь webClient.результат().map(о...

когда это стало проблемой, если код неблокирующий весь?

Sergey-Kurenchuk Автор вопроса
Dima
когда это стало проблемой, если код неблокирующий ...

Для понимания где больше всего потребляется cpu. Плюс кажется так себе что по тредам нельзя понять что он делает. Куда воевать разработчику если тред евентпула использует 100%

Sergey Kurenchuk
А что значит работающие треды, ведь тут другая сит...

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

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта