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