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

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

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

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

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

11 ответов

21 просмотр

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

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
А что значит работающие треды, ведь тут другая сит...

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта