У некоторых облачных дисков и небольших конфигураций серверов есть burst-кредиты, которые позволяют какое-то время работать быстрее базовой производительности. Если высокая нагрузка держится долго и кредиты кончаются, скорость резко падает.
Почему Диск долго работает выше базовой производительности → Следствие Burst-кредиты кончаются, производительность резко падает до базовой → На экране Каждый вечер через несколько часов нагрузки начинаются лаги
Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда инфраструктуры · Инфраструктура БД
Команда инфраструктуры: задачи
Серверы и ОС: диски с гарантированной производительностью (gp3, тип с заданным IOPS), алерт на остаток кредитов, проверка лимита burst для дисковой пропускной способности инстанса и CPU-кредитов. Серверы БД: перевести диски БД, включая управляемые БД, на тип с гарантированной производительностью, алерт на остаток кредитов.
Цифры для ориентира
Диск AWS gp2 на 100 GB обычно даёт 300 IOPS, в режиме burst 3 000 IOPS, и при полном запасе кредитов держит burst около 30 минут. gp3 всегда даёт 3 000 IOPS без всяких кредитов. Небольшие диски Azure Premium SSD тоже работают в режиме burst за счёт кредитов до 30 минут.
На графике
Упор в лимит (плато) · IOPS, остаток burst-кредитов
Где смотреть
Смотреть в CloudWatch EBS BurstBalance (gp2, st1, sc1), EBSIOBalance% и EBSByteBalance% инстанса (у части инстансов с burst), CPUCreditBalance у burst-инстансов. В Azure смотреть метрики использования burst-кредитов, например Data Disk Used Burst IO Credits Percentage
Подтверждает
С момента, когда остаток падает почти до 0, IOPS (VolumeReadOps, VolumeWriteOps) выходит на плато на уровне базовой производительности, а VolumeQueueLength и лаги растут вместе. Начинается после нескольких часов пика
Опровергает
Если запас всех кредитов большой, а IOPS стоит на плато, это фиксированный лимит тома или инстанса (dk-iops)
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Подробнее
Даже если с диском всё в порядке, у небольших виртуальных серверов есть лимит burst на саму дисковую пропускную способность инстанса (например, не меньше 30 минут в сутки), и картина получается такая же. Дешёвые серверы с CPU-кредитами, когда кредиты кончаются, тоже замедляются до базовой производительности.
Источники
Amazon EBS General Purpose SSD volumesAWS Базовая производительность gp2: 3 IOPS на GiB (минимум 100), burst до 3 000 IOPS за счёт I/O-кредитов, 5 400 000 кредитов хватает минимум на 30 минут. gp3 всегда даёт 3 000 IOPS без burst
Managed disk burstingMicrosoft Azure Premium SSD P20 и меньше используют burst на основе кредитов, при полном запасе кредитов максимальная скорость burst держится 30 минут
Amazon EBS-optimized instance typesAWS Некоторые инстансы держат максимальную производительность EBS только 30 минут раз в 24 часа, затем возвращаются к базовой
Amazon CloudWatch metrics for Amazon EBSAWS BurstBalance: остаток (%) I/O-кредитов gp2 и кредитов пропускной способности st1 и sc1, VolumeReadOps, VolumeWriteOps, VolumeQueueLength
CloudWatch metrics that are available for your instancesAWS EBSIOBalance% и EBSByteBalance%: остаток кредитов EBS у некоторых инстансов с burst на 30 минут раз в 24 часа, CPUCreditBalance: остаток CPU-кредитов burst-инстанса
Disk metricsMicrosoft Azure Data Disk Used Burst IO Credits Percentage и другие метрики использования burst-кредитов дисков и ВМ (интервал 5 минут)