Пропускная способность Spray и akka-http значительно снизилась при изменении длины ответа

#performance #scala #jvm #spray #akka-http

#Производительность #scala #jvm #spray #akka-http

Вопрос:

Я тестирую spray и akka-http, чтобы быть в курсе возможной пропускной способности, которую я могу получить. Протестированное приложение простое. Он возвращает статический вывод по статическому пути получения. Но в случае обеих фреймворков я получаю снижение пропускной способности с ~ 64000 до ~ 22000 rps при увеличении длины статического ответа с 7 до ~ 2040 символов.

Кто-нибудь еще сталкивался с таким поведением? Как можно улучшить ситуацию?

Протестированный код можно найти здесь: суть

Это вдохновлено тестом, описанным в этом вопросе.

Используемые версии:

ubuntu 14.04, scala 2.11.8, oracle jdk 1.8

akka-http: 2.4.11

spray: 1.3.1 с akka 2.3.6

Результаты тестов

Комментарии:

1. Вы возвращаете в 300 раз больше данных, но получаете замедление только в 3 раза. Это все еще звучит неплохо. Итак, вы перешли от нажатия 7 * 64000 = 448000 бит / с к 2040 * 22000 = 44880000 бит / с, что в целом все еще является значительным увеличением.

2. Что ж, wrk показывает увеличение с ~ 9 МБ / с до ~ 11 МБ / с. Но я не вижу в AWS CloudWatch чего-то похожего на насыщение сети. Я не думаю, что сеть является моим узким местом. Я также не вижу насыщения процессора или памяти: загрузка процессора снижается с 80% до 60%. Объем памяти увеличен с 0,5 ГБ до 1,5 ГБ (при 14 ГБ свободного места в системе). Прерывания процессора значительно не увеличиваются. Так почему spray / akka-http должен иметь возможность обрабатывать значительно меньше запросов?

3. @jrudolph, извините. Я повторил свои тесты и увидел ошибку. Пропускная способность в МБ / с увеличена с ~ 9 МБ / с до ~ 70 МБ / с. Я добавил также вариант со scalatra в набор тестов (код добавляется к той же сути) и увидел аналогичную пропускную способность с длинным выводом. Похоже на ограничение пропускной способности сети. С другой стороны, iperf от клиента к серверу с параметрами по умолчанию дает мне ~ 88 МБ / с. Как я могу лучше проверить эту гипотезу? Результаты тестирования можно найти здесь

Ответ №1:

Похоже, это проблема с сетью.
@jrudolph спасибо, что подчеркнули пропускную способность сети.