Максимальное количество нарушителей в приложении
Используя LMAX Disruptor, мы заметили, что если мы будем использовать в приложении около 5-10 прерывателей (вроде цепочки прерывателей, где каждый прерыватель имеет одного потребителя, выполняет определенную задачу, а затем передает сообщение следующему разрушителю). / ringbuffer), что происходит, когда загрузка ЦП достигает 90% и выше, и система перестает отвечать на запросы до тех пор, пока мы не отключим приложение. Мы чувствуем, что это происходит из-за большого количества активных потоков прерывателя. Это происходит даже тогда, когда разрушители на самом деле ничего не обрабатывают. Кто-нибудь может прокомментировать, какое должно быть оптимальное количество разрушителей, которые будут использоваться в приложении?
1 ответ
Возможно, вам придется изменить стратегии ожидания, которые вы используете для потребителей. Если вы используете стратегию "занятого ожидания" для всех из них, даже если входные данные для кольцевых буферов не были предоставлены, потоки опроса могут по-прежнему связывать ресурсы ЦП, поскольку они будут в узких циклах, где они постоянно проверяют буфер для новых значений для чтения.