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

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

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

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

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

11 ответов

27 просмотров

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта