Нагрузочный тест RSocket показал плохую производительность

#spring #rsocket #spring-rsocket

Вопрос:

Я пытаюсь сравнить производительность RSocket (с использованием Spring) при загрузке с WebClient.

При модульном тестировании вызов RSocket показывает гораздо лучшую производительность, но при нагрузочном тестировании производительность значительно снижается по сравнению с http (с использованием Webclient).

Это контроллер, предоставляющий конечные точки RSocket

Это класс клиента, который вызывает конечные точки RSocket.

NB: Я предоставляю клиенту RSocket доступ к конечным точкам http, чтобы иметь возможность тестировать их с помощью Gatling.

Результаты испытаний:

1 — Одиночные звонки:

  • Webclient => 700 мс
  • RSocket => 300 мс

2 — 200 одновременных вызовов:

  • Webclient => 880 мс
  • RSocket => 3_400 мс

В вызове Webclient я сокращаю количество вызовов на сервер, собирая данные потока в список перед запросом сервера. Во время вызова RSocket я передаю все данные в потоковом режиме, поэтому я обрабатываю и отправляю клиенту, как только они получены (=> гораздо больше вызовов на сервер по запросу клиента).