Вопрос или проблема
У нас есть серверы Kafka на Red Hat, и использование диска Kafka очень высоко, почти 100%.
Что мы наблюдаем из команды sar, так это то, что значения rd_sec/s и wr_sec/s высоки.
Вопрос таков: как мы можем определить, превышают ли эти значения порог?
Диск Kafka — это RAID 10 с объемом 10 ТБ.
Итак, как мы можем определить порог для операций чтения и записи на диск?
Например, можем ли мы сказать, что значения больше 1,000,000 rd_sec/s и wr_sec/s считаются высокими?
sar -d -p | grep sda
04:05:24 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:05:41 PM sda 496.00 82624.00 0.00 166.58 49.43 93.84 2.02 100.10
04:05:42 PM sda 3686.00 90528.00 2877784.00 805.29 46.88 14.00 0.27 100.00
04:05:43 PM sda 644.00 106208.00 10576.00 181.34 49.16 71.65 1.55 100.10
04:05:44 PM sda 493.00 81016.00 328.00 165.00 47.27 89.59 2.03 100.00
04:05:45 PM sda 1515.00 257952.00 2944.00 172.21 29.20 26.59 0.66 100.00
04:05:46 PM sda 2202.00 366560.00 0.00 166.47 18.77 8.12 0.45 100.00
04:05:47 PM sda 4262.00 187016.00 2784160.00 697.13 41.59 7.48 0.23 100.10
04:05:48 PM sda 239.00 38144.00 0.00 159.60 49.27 163.82 4.18 100.00
04:05:49 PM sda 468.00 77872.00 968.00 168.46 47.61 142.10 2.14 100.00
04:05:50 PM sda 2185.00 368568.00 0.00 168.68 19.22 9.47 0.46 100.00
04:05:51 PM sda 2273.00 369520.00 0.00 162.57 20.25 8.96 0.44 100.00
04:05:52 PM sda 2331.00 260432.00 698720.00 411.48 34.09 11.69 0.43 100.00
04:05:53 PM sda 1492.00 247320.00 0.00 165.76 35.85 28.13 0.67 100.00
04:05:54 PM sda 2375.00 392224.00 840.00 165.50 22.43 9.50 0.42 100.00
04:05:55 PM sda 2686.00 439160.00 0.00 163.50 22.87 8.82 0.38 102.00
Ответ или решение
Определение порогов метрик дискового ввода-вывода (I/O) для Kafka серверов на Red Hat
В последние годы компании, использующие Kafka, сталкиваются с растущими требованиями к производительности систем. Одним из основных факторов, влияющих на производительность, является высокое использование дисковых ресурсов. Если вы наблюдаете, что использование диска на серверах Kafka достигает почти 100%, это может привести к серьезным проблемам с производительностью. Поэтому определение пороговых значений для метрик ввода-вывода, таких как rd_sec/s
(чтение в секунду) и wr_sec/s
(запись в секунду), является ключевым шагом в оптимизации работы ваших систем.
Анализ текущих данных
Согласно вашему выводу команды sar
, значения rd_sec/s
и wr_sec/s
значительно варьируются:
04:05:42 PM sda 3686.00 90528.00 2877784.00 805.29 46.88 14.00 0.27 100.00
На этих примерах видно, что иногда значения записи (wr_sec/s
) достигают более 2,800,000, что является крайне высоким показателем.
Понимание порогов
Чтобы определить пороговые значения для I/O, необходимо учитывать несколько факторов:
-
Тип устройства и его производительность: Ваш RAID 10 дисковый массив с размером 10 ТБ способен обрабатывать определенное количество операций ввода-вывода. Диски RAID 10 обеспечивают устойчивую скорость чтения и записи за счет параллелизма и зеркалирования, однако получить точное значение порога можно, основываясь на спецификациях вашего оборудования.
-
Нагрузочные тесты: Проведение нагрузочных тестов на ваших серверах поможет оценить реальные пределы производительности системы. Специальные инструменты, такие как
fio
, позволяют смоделировать реальные сценарии чтения и записи для определения предельных значений. -
Нормативные данные и рекомендации: Для современных дисков часто устанавливаются общие практические пороги. Обычно значения
rd_sec/s
иwr_sec/s
, превышающие 1,000,000, могут свидетельствовать об избыточной нагрузке. Однако следует помнить, что эти значения могут варьироваться в зависимости от конфигурации и назначения системы. Например, для активного сервера Kafka с высокой загрузкой может потребоваться более высокий порог. -
Анализ исторических данных: Вы имеете возможность проанализировать длительные временные ряды использования I/O для более точного определения нормальной работы вашего оборудования. Сравнение значений во время пиковых нагрузок и реализация механизмов алертинга могут помочь вам установить более релевантные пороги.
Рекомендации
-
Мониторинг: Используйте инструменты мониторинга, такие как Prometheus совместно с Grafana, для постоянного отслеживания метрик дискового ввода-вывода.
-
Настройка алертов: Установите алерты при превышении порогов. Например, значение
wr_sec/s
, превышающее 1,000,000, может вызывать отправку уведомления администратору. -
Оптимизация конфигурации: Проверьте конфигурацию вашего Kafka: параметры очереди, размер сообщений и использование партиций могут существенно влиять на I/O.
-
Обновление оборудования: В случае систематического превышения пороговых значений может потребоваться обновление оборудования или изменение архитектуры системы.
Заключение
Определение порогов метрик ввода-вывода для дисков серверов Kafka является важной задачей для поддержания производительности и надежности вашей инфраструктуры. Регулярный мониторинг, анализ данных и настройка системы в соответствии с реальными потребностями помогут вам оптимизировать работу системы. В конечном итоге, эти меры приведут к повышению общей эффективности и стабильности работы ваших производственных сред.