Ответ
Steal Time в мониторинге (например, в top или CloudWatch) — это время, которое виртуальная машина (инстанс) готова была выполнять работу, но не могла получить физический CPU, потому что гипервизор отдал его другой VM на том же физическом хосте. Для T-инстансов AWS (t2, t3, t4g) это явление напрямую связано с моделью базовой производительности (CPU baseline) и CPU-кредитов.
Причины роста Steal Time в T-инстансах:
- Истощение CPU-кредитов: T-инстансы имеют базовый уровень CPU-производительности (например, 20% для t3.micro). Для работы выше этого уровня они тратят заработанные CPU-кредиты. Если нагрузка продолжительная и высокая, кредиты заканчиваются, и инстанс ограничивается своим baseline. Если в этот момент ему нужно больше CPU, он встаёт в очередь и фиксирует
steal time. - Конкуренция на физическом хосте («шумный сосед»): AWS размещает множество виртуальных машин на одном физическом сервере. Если другие инстансы на том же хосте активно используют CPU, вашему T-инстансу может не хватить даже его гарантированного baseline, что также приведёт к
steal.
Диагностика и решения с позиции DevOps:
- Мониторинг: Настроить алерты в CloudWatch на метрики
CPUCreditBalance(остаток кредитов) иCPUSurplusCreditBalance(долг, в режимеunlimited).# Пример просмотра баланса кредитов через AWS CLI aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUCreditBalance --dimensions Name=InstanceId,Value=i-0abc123def456 --start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%TZ) --end-time $(date -u +%Y-%m-%dT%TZ) --period 300 --statistics Average - Выбор инстанса: Если нагрузка стабильно высокая, перейти на инстансы семейства
M(general purpose) илиC(compute optimized), которые предоставляют постоянную (фиксированную) производительность CPU. - Настройка инстанса: Для всплесковых, но непостоянных нагрузок можно включить для T3 инстанса
unlimited mode. Это позволит работать выше baseline даже при нулевом балансе кредитов, но за дополнительную плату за использованные сверхлимитные кредиты. - Вертикальное масштабирование: Увеличить размер инстанса (например, с
t3.microнаt3.large), чтобы получить более высокий baseline и больший пул кредитов.