Я отвечаю за управление двумя кластерами kafka (один для prod и один для нашей среды разработки).Настройка в основном похожа, но среда разработки не имеет настройки SASL / SSL и использует только 4 вместо 8 брокеров.Каждый брокер назначается выделенному узлу Google Kubernetes с 4 виртуальными ЦП и 26 ГБ ОЗУ.
В нашей среде разработки у нас есть примерно 1000 сообщений в секунду, и каждый из 4 брокеров довольно последовательно использует 3 из4 доступных ядра ЦП (загрузка ЦП 75%).
В нашей производственной среде мы получили около 1500 сообщений в секунду, и загрузка ЦП также составляет 3 из 4 ядер.
Кажется, что использование ЦП является, по крайней мере, узким местом для нас, и я хотел бы знать, как я могу выполнить профилирование ЦП, чтобы я знал, что именно является причиной высокой загрузки ЦП.Так как он относительно последовательный, я думаю, это может быть наше быстрое сжатие.
Меня интересуют все идеи о том, как я могу исследовать причину высокой загрузки ЦП и как я могу настроить ее в своем кластере.
Версия Apache Kafka: 2.1(Раньше загрузка процессора была похожа и на Kafka 0.11.x)
Dev Cluster (сжатие Snappy, без SASL / SSL, 4 брокера): 1000 сообщений в / сек, 3 ядра процессорасогласованное использование
кластер Prod (сжатие Snappy, SASL / SSL, 8 брокеров): 1500 сообщений в / с, согласованное использование 3 ядер процессора
Примечание: я уже убедился, что продюсеры производят сжатое сжатие своих сообщений.У меня есть доступ ко всем метрикам JMX, но я не смог найти ничего полезного для определения загрузки ЦП.
У меня уже есть метрики, прикрепленные к моему прометею (здесь я также получил статистику использования ЦП).Проблема в том, что загрузка ЦП контейнера не говорит мне, ПОЧЕМУ он такой высокий.Мне нужно больше детализации, например, на что тратятся циклы ЦП (сжатие? Связь с брокером? Sasl / ssl?).