Использование LMAX Disruptor для обработки событий снижает производительность по сравнению с обработчиками Netty - PullRequest
0 голосов
/ 07 апреля 2020

Я написал Netty HTTP Server.

Я выясняю, как правильно обрабатывать запросы Http
Опции: (1. Netty Handlers 2. LMAX Disruptor).

Я где-то читал, что LMAX Disruptor хорош для обработки событий asyn c.
Но после нагрузочного тестирования сервер с LMAX Disruptor для обработки событий обеспечил на 70% меньшую пропускную способность, чем Netty Handler. И задержка также увеличилась на 200%.
Я получал 30 кбит / с на 8-ядерном 16-гигабайтном боксе. После использования Lmax Disruptor, я получаю 10k QPS.
В настоящее время мой сервис просто читает запрос Json и возвращает ответ c. Я просто пытаюсь сравнить сырую производительность на данный момент.

Я читаю HttpRequest из SimpleChannelInboundHandler и отправляю обработчику событий LMAX Disruptor и освобождаю обработчик netty worker, конфигурация которого указана ниже:

Netty Потоки ввода-вывода: 24 и рабочие потоки: 48

Disruptor disruptor = new Disruptor<>(new EventFactory(), 65536, DaemonThreadFactory.INSTANCE);

Это потому, что Disruptor создает новый поток Daemon для каждого события?

...