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