Size: a a a

2020 September 22

IG

Ilya Grudsky in pro.jvm
Так как тред пул для Netty ограничен.
источник

SA

Sergey Alaev in pro.jvm
Ilya Grudsky
Так как тред пул для Netty ограничен.
Так это аксиома, что в IO пуле нельзя ничего блокирующего запускать, при получении запроса из нетти нужно всегда переходить в другой, рабочий пул.
источник

AE

Alexandr Emelyanov in pro.jvm
Sergey Alaev
Интересно, были ли хоть у кого-нибудь проблемы с производительностью блокирующего jdbc.
если есть реально долгие запросы, то нетти с r2dbc даст обгромный буст по сравнению с jdbc, даже на классическом mvc
источник

SA

Sergey Alaev in pro.jvm
Т.е. r2dbc используется, чтобы не настраивать самим рабочий пул для jdbc? Ну, можно и так, конечно.
источник

IG

Ilya Grudsky in pro.jvm
Sergey Alaev
Т.е. r2dbc используется, чтобы не настраивать самим рабочий пул для jdbc? Ну, можно и так, конечно.
r2dbc -> non-blocking driver
источник

AE

Alexandr Emelyanov in pro.jvm
Sergey Alaev
Т.е. r2dbc используется, чтобы не настраивать самим рабочий пул для jdbc? Ну, можно и так, конечно.
r2dbc не блокирует потоки на работе с бд
источник

AE

Alexandr Emelyanov in pro.jvm
меньше ресурсов потребляется
источник

TI

Tolegen Izbassar in pro.jvm
Sergey Alaev
Интересно, были ли хоть у кого-нибудь проблемы с производительностью блокирующего jdbc.
Дело же не только в производительности, но и в утилизации ресурсов. Сервер без блокировок экономнее и может обработать больше запросов (нет ограничения на количество тредов). Да и расходы на переключение контекста меньше
источник

TI

Tolegen Izbassar in pro.jvm
А сам запрос может за такое же время в итоге обработаться как и блокирующий код
источник

SA

Sergey Alaev in pro.jvm
Tolegen Izbassar
Дело же не только в производительности, но и в утилизации ресурсов. Сервер без блокировок экономнее и может обработать больше запросов (нет ограничения на количество тредов). Да и расходы на переключение контекста меньше
Это верно в общем случае, но неверно для jdbc, т.к. кол-во параллельных транзакций жестко ограничено сервером. Учитывая, что RDBMS - это не очень быстро (единицы-десятки миллисекунд на запрос), затраты цпу на переключение контекстов потоков ничтожны на общем фоне.
источник

TI

Tolegen Izbassar in pro.jvm
Для клауд окружения утилизировать ресурсы наиболее эргономно актуально
источник

AE

Alexandr Emelyanov in pro.jvm
Tolegen Izbassar
Дело же не только в производительности, но и в утилизации ресурсов. Сервер без блокировок экономнее и может обработать больше запросов (нет ограничения на количество тредов). Да и расходы на переключение контекста меньше
главное еще базу при этом прокачать на соответствующее количество подключений и запросов
источник

AE

Alexandr Emelyanov in pro.jvm
Tolegen Izbassar
А сам запрос может за такое же время в итоге обработаться как и блокирующий код
так время обработки естественно то же самое. просто количество запросов обработать можно больше
источник

TI

Tolegen Izbassar in pro.jvm
Sergey Alaev
Это верно в общем случае, но неверно для jdbc, т.к. кол-во параллельных транзакций жестко ограничено сервером. Учитывая, что RDBMS - это не очень быстро (единицы-десятки миллисекунд на запрос), затраты цпу на переключение контекстов потоков ничтожны на общем фоне.
Ну в целом я согласен, что блокирующий пул делает реактивное приложение хуже
источник

TI

Tolegen Izbassar in pro.jvm
Просто настолько хуже, что вся реактивщина уже не имеет смысл - с таким тезисом не согласен.
источник

B

Balas in pro.jvm
Ilya Grudsky
Он быстрее чем async. Производительность приложения может пострадать если используется netty pool для incoming http requests (webflux)
А что Webflux использует для этого? Он же вроде использует скедулер контейнера, для томката по крайней мере точно
источник

IG

Ilya Grudsky in pro.jvm
Balas
А что Webflux использует для этого? Он же вроде использует скедулер контейнера, для томката по крайней мере точно
там ограниченный пул тредов, который он может использовать. Если блокируешь выделенный тредик -> беда.
источник

B

Balas in pro.jvm
Я не про блокировку, про incoming http request
источник

SA

Sergey Alaev in pro.jvm
И правда. spring webflux вызывает контроллеры из потока IO пула нетти. Позорище....
источник

IG

Ilya Grudsky in pro.jvm
Balas
Я не про блокировку, про incoming http request
netty. (но может я не особо понял вопрос)
источник