То, что делает ваше приложение звучит в основном с привязкой к вводу-выводу, так как оно анализирует (относительно большие) документы, которые оно читает из запроса. Чтение потока, вероятно, медленное (зависит также и от сети), и синтаксический анализ XML тоже не самый быстрый процесс (я не знаю, что еще нужно сделать, чтобы подготовить ответ).
В то время как вы могли бы перенести обе эти задачи в другой пул потоков:
- Не блокируйте поток клиента во время чтения запроса (это легко сделать, используя, например,
Mono<RequestBody>
в Spring вместо RequestBody
)
- Используйте неблокирующий синтаксический анализатор, как @ Полезно прокомментировал Стрелок
Если ваше приложение тем временем не делает что-то еще (вот где другие вещи, которые вы делаете, входят в картину), вы на самом деле не извлекаете выгоду из реактивной архитектуры. Как правило, это верно для всех приложений, связанных с IO. Реактивная архитектура не очень хорошо сочетается с задачами в основном ввода-вывода.
Конечно, все, что я сказал, является в основном гипотезой, поскольку я не видел ни вашего кода, ни какой-либо информации о вашем приложении. Но это некоторые общие рекомендации. Невозможно дать более точный ответ, не зная точно , что происходит внутри вашего приложения, и каковы фактические цифры. Даже тогда это может быть довольно захватывающим. (Кстати, именно поэтому кто-то (не я) проголосовал за закрытие вашего вопроса)