Как убедиться, что мое Reactive приложение работает в стиле цикла событий - PullRequest
0 голосов
/ 14 ноября 2018

Я использую весеннюю загрузку 2.0.4.RELEASE. Я сомневаюсь, работает ли мое приложение в стиле цикла событий или нет. Я использую tomcat в качестве сервера.

Я запускаю несколько тестов производительности в своем приложении и через некоторое время вижу странное поведение. После того, как запрос достигает 500 запросов в секунду, мое приложение не может обслуживать более 500 запросов в секунду. Через прометей мне удалось выяснить, максимальная нить для кота была 200 по умолчанию. Похоже, что все потоки были израсходованы, и поэтому сервер не смог обработать более 500 запросов в секунду. Пожалуйста, поправьте меня, если я неправ.

Может ли сервер Tomcat работать в стиле цикла обработки событий? Как я могу изменить размер цикла событий для сервера Tomcat, если это возможно.

Попытка поменять его на причал все та же проблема. Интересно, работает ли мое приложение в стиле цикла событий.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

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

Я выполнил тест производительности на своем локальном компьютере и проанализировал приложение через JConsole.

Как я уже сказал, я запланировал все свои блокирующие дБ-звонки на schedulers.elastic.То, что я понял, что я это вызывает узкое место.поскольку мои дБ-соединения ограничены, и я использую hikari для пула соединений, поэтому не имеет значения количество потоков, которые я создаю из эластичного пула.Поскольку реактивное программирование больше связано с потреблением ресурсов в полной мере с меньшим числом потоков, поскольку потоки создавались неограниченным образом, поэтому он ничем не отличался от обычного приложения.

Так что то, что я делал как часть разрешения, ограниченоколичество потоков до 100, которые должны были использоваться для вызовов в дБ.Количество взлетов выросло с 500 до 2300 в секунду.

Я знаю, что это не то число, которое следует ожидать от реактивного приложения, оно обладает гораздо большими возможностями.Поскольку сейчас у меня нет другого выбора, кроме как иметь дело с нереактивными драйверами. В ожидании выпуска реактивных драйверов для сервера mssql промышленного уровня.

0 голосов
/ 20 декабря 2018

Эй, я думаю, что вы делаете что-то не так в своем проекте, возможно, одна из ваших зависимостей не поддерживает реактивное программирование.Если вы хотите извлечь выгоду из асинхронного программирования (реактивного), ваш код должен быть на 100 реактивным, даже в целях безопасности вы должны использовать реактивную пружинную безопасность.Обычно приложение реактивной пружины запускается на netty, а не в tomcat, поэтому проверьте свою зависимость, потому что tomcat не является реактивным

...