Отладка развёрнутых приложений

Развёртывание приложений на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Превышение времени выполнения задачи

  • Функция иногда завершается с ошибкой
  • В логе указано «Task timed out»
  • Сигнатура ошибки указывает на истинную причину

Секундомер рядом со строкой лога с ошибкой о превышении времени ожидания задачи Lambda

Развёртывание приложений на AWS

Типичные сигнатуры сбоев Lambda

Сетка 2×2 с сигнатурами сбоев Lambda: Timeout с логом task-timed-out, Throttled с TooManyRequestsException, Access Denied с AccessDeniedException и Out of Memory с ошибкой signal-killed

  • Timeout: «Task timed out after N seconds»
  • Throttle: TooManyRequestsException
  • Отказ IAM: AccessDenied, not authorized
  • Нехватка памяти: среда выполнения прервана в процессе
Развёртывание приложений на AWS

Первые действия при сбое функции

  • Сначала прочитайте сообщение об ошибке
  • Сопоставьте его с известной сигнатурой
  • Проверьте задержку нижестоящего вызова при таймаутах
  • Измените одно, затем проведите повторный тест

Цикл отладки: прочитать сообщение об ошибке, сопоставить с известной сигнатурой, проверить задержку нижестоящего вызова, изменить одно и провести повторный тест

Развёртывание приложений на AWS

CloudWatch Logs Insights

В Logs Insights filter сужает выборку, а stats агрегирует результаты. Пример запроса считает ошибки за каждую минуту:

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
Развёртывание приложений на AWS

Отладка сбоев интеграции с двух сторон

  • Сбои часто возникают между сервисами
  • Изучите логи как вызывающей, так и вызываемой стороны
  • Сопоставьте записи по request ID или trace ID
  • Разрыв между ними указывает на место сбоя

Логи вызывающей и вызываемой стороны, выровненные по request ID; пробел между ними обозначен как точка разрыва интеграции, где запрос прерывается

Развёртывание приложений на AWS

Проверки состояния и готовности

Балансировщик нагрузки направляет трафик к работоспособным целям с зелёными галочками; неисправная цель исключается из ротации после нескольких последовательных провалов проверки состояния

  • Проверка состояния: жив ли экземпляр и обрабатывает ли запросы?
  • Балансировщики направляют трафик только к исправным целям
  • Готовность: готов ли экземпляр принимать трафик?
  • Провал проверки исключает цель из ротации
Развёртывание приложений на AWS

План отладки

  • Прочитайте ошибку и сопоставьте с сигнатурой
  • Запросите логи через Logs Insights для локализации
  • Сопоставьте обе стороны по request ID или trace ID
  • Измените одно и проверьте результат

Четырёхшаговый план отладки: прочитать ошибку и сопоставить с сигнатурой, запросить логи через Insights, сопоставить обе стороны по trace ID, изменить одно и проверить

Развёртывание приложений на AWS

Давайте потренируемся!

Развёртывание приложений на AWS

Preparing Video For Download...