ScheduledThreadPoolExecutor не отправляет запланированные задачи при загрузке ЦП на 99 %.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ScheduledThreadPoolExecutor не отправляет запланированные задачи при загрузке ЦП на 99 %.

Сообщение Anonymous »

В хорошо масштабируемом продукте я использую ScheduledThreadPoolExecutor для отправки отложенных событий, по одному на каждое входящее сообщение. Задержка составляет около 1 секунды.
При очень высокой загрузке процессора планировщик отправляет события с очень низкой скоростью. Несмотря на то, что в секунду должны отправляться сотни событий, он отправляет едва 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»