При очень высокой загрузке процессора планировщик отправляет события с очень низкой скоростью. Несмотря на то, что в секунду должны отправляться сотни событий, он отправляет едва 10, иногда 1 или 2.
Это конфигурация
Код: Выделить всё
private final ScheduledThreadPoolExecutor deliveryReceiptExecutorService =
new ScheduledThreadPoolExecutor(50, threadFactory);
Вопрос: можно ли кто-нибудь порекомендует лучший подход, чтобы гарантировать хотя бы некоторый баланс между входящими событиями и исходящими отложенными событиями? Судя по журналам класса планировщика, после часа работы процесса CompleteTaskCount равен 300k, а TaskCount равен 3M, в 10 раз больше.
Обновление:
Я использую ECS в AWS для запуска задач с 1 виртуальным ЦП и 4 ГБ памяти. Идея моего теста состоит в том, чтобы посмотреть, что произойдет, когда произойдет всплеск трафика, и можно ли что-то сделать, чтобы гарантировать, что события отправляются в режиме реального времени, без значительных задержек.
Подробнее здесь: https://stackoverflow.com/questions/790 ... 9-cpu-load
Мобильная версия