Мы используем karaka-console-customer от Sarama для запуска теста производительности.
Без изменения какой-либо конфигурации Sarama, вышеуказанная программа использует до 1/4 полосы пропускания экземпляра EC2.Если мы создадим еще 3 sarama.NewConsumer
внутри одной и той же программы, и каждая из них будет использовать неперекрывающееся подмножество разделов и отправлять сообщения на один и тот же канал, эта программа будет использовать всю полосу пропускания.
Исходя из этого, мы знаем
- Наша kafka может поддерживать полную пропускную способность для насыщения полосы пропускания EC2
- Канал Go может поддерживать отправку / запись сообщений с полной пропускной способностью
- Это не ограничивает процессор при использовании только 1sarama consumer
Больше ничего не работает, и профилирование блока pprof показывает, что блокируются только chan / select, а профилирование мьютекса ничего не показывает.Мы понятия не имеем, что ограничивает уровень потребления при использовании одного потребителя сарамы.
Кто-нибудь сталкивался с этим?