У нас есть приложение, построенное на основе Java + Netty. Приложение чувствительно к задержке. Конфигурация Netty:
- 1 главный поток + 96 рабочих потоков.
- Всего установлено соединений с каналами Netty: ~5 тыс.+
Здесь обработка запроса выполняется только в памяти, нет задействованы сетевой ввод-вывод или любые вызовы БД. Это ресурсоемкая задача. Поскольку обработка запросов также обрабатывается рабочим потоком из определенного канала, запросы других каналов будут поставлены в очередь для обработки (поправьте меня, если я ошибаюсь).
Мы хотим улучшить пропускную способность приложения. В качестве обходного пути мы хотим делегировать логику обработчика обработки запросов отдельной службе-исполнителю (служба-исполнитель представляет собой глобальный пул потоков для всех рабочих потоков). При таком подходе рабочему потоку не нужно ждать завершения обработки запроса, он просто делегирует запрос пулу потоков и быстрее переходит к следующему набору запросов в очереди.
Что мне следует учитывать дальше?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -to-separa
Мобильная версия