Каковы важные метрики AWS Lambda, которые вы обязательно должны контролировать?
Ваше приложение не должно быть «огромным», чтобы оно было Достаточно функций и абстракции, чтобы потерять в нем Анкет Как инженер DevOps, вы не можете покрыть каждый фактор. Показывает Соответствующий Факты и задание правильных вопросов имеет решающее значение! Поэтому, когда есть огонь, вы можете устранение неполадок в кратчайшие сроки.
Каждая организация уникальна, и у каждой рабочей нагрузки есть своя утилита. Что сказано, Мы все еще можем иметь обобщенный подход и начните с перечисления нескольких желательных качеств, которые вы можете понадобиться из своего приложения AWS:
- Спектакль
- Ответная реакция
- Экономическая эффективность
AWS LAMBDA Ценообразование
Ценообразование Lambda очень проста, а оплачиваемые факторы включают:
- Количество запросов
- Вычислить время
- Объем памяти, предоставленной
Вычислить время и положение памяти связаны Анкет Мы упомянем это более подробно дальше. Давайте начнем с количества запросов. Первые миллиона запросов бесплатны каждый месяц. После этого Вам будет взиматься 0,20 долл. США за миллион запросов до конца этого месяца. Это глупо дешево.
В дополнение к количеству запросов, Вы также платите за память, выделенную для вашей функции вместе с вычислительным временем что функция требует выполнения своей работы. Вы указываете распределение памяти при развертывании функции. Время вычисления может варьироваться от одного вызова к следующему, но ограничено максимальным тайм -аутом, который вы настроили.
Предположим, что ваша функция работает в течение двух секунд (2000 миллисекунд) и была выделена 512 МБ памяти, тогда вам будет выставлен счет за 2 * 512 ГБ секунды использования. Это называется GB-секунды. , где вы платите за вычислительное время на распределении памяти и времени, которое работает ваша функция. Если ваша функция имеет 1 ГБ памяти выделена и работает в течение одной секунды (1000 миллисекунд), вы платите 1 ГБ секунду.
Первые 400 000 ГБ секунды бесплатны каждый месяц. После того, как бесплатная квота достигнута, Вы платите 0,0000166667 за ГБ секунду (Не стоит поцарапать голову, используйте наш калькулятор затрат ) Вместо этого остальная часть этого месяца. Кроме того, вы можете получить некоторые дополнительные сборы за ресурсы, такие как ведро AWS S3, VPC, DynamoDB и т. Д.
Amazon’s Плата за что-то, что вы используете Бизнес -модель не полагается на ваши потребности, а на успех вашего бизнеса. Если ваши приложения доступны чаще, ваша организация больше пользуется, наряду с немного большим счетом AWS. Это, в свою очередь, приносит пользу Amazon.
Какие метрики по умолчанию отслеживает Lambda?
Служба Lambda поставляется с семью метриками для ваших функций вне коробки. Призывы, продолжительность, количество ошибок, дроссели, асинхронные сбои доставки, возраст итератора и одновременные выполнения.
Настройка их, чтобы предупредить вас, когда это необходимо, — это проблема, которую мы можем легко решить. Давайте посмотрим, что эти показатели означают на практике.
Призывы Метрика говорит вам, как часто функция вызывалась в определенный период времени.
Продолжительность Метрика рассказывает вам о времени выполнения вашей функции в течение определенного периода времени. Это разбивает их в самую медленную, быстрая и средняя продолжительность.
количество ошибок о том, как часто ваша функция разбилась в течение определенного периода времени. Это также включает в себя показатель успеха в процентах, потому что сотня ошибок с уровнем успеха 99% означает нечто отличное, чем сотня ошибок с показателем успеха в 1%.
дроссельный Метрика показывает, сколько вызовов функций не может быть обработано, потому что ваша функция уже была увеличена до предела параллелистики Lambda. По умолчанию составляет 1000 одновременных выполнений, но его можно увеличить, если это необходимо.
Асинхронные сбои доставки возникают, когда ваша функция пытается написать в очередь пункта назначения или мертвой буквы, но терпит неудачу.
Итераторский возраст Метрика полезна, когда ваша функция читает из потока (то есть кинезис или кафка). Такие потоки часто используются, поэтому вверх по течению услуги не перегружены способностью Lambda очень быстро масштабировать. Если ваша потребляющая функция лямбды слишком медленная, может быть, что данные остаются дольше и дольше в потоке, и, следовательно, показатель возраста итератора возрастает.
одновременное исполнение Метрические проверки, сколько параллельных контейнеров для ваших функций загружается в определенный период времени. Если вы приближаетесь к пределу региона в 1000, вам следует попытаться либо улучшить эффективность ваших функций, либо поговорить с AWS об увеличении этого предела для вашей учетной записи.
Введите Lambda Cold Starts
Каждая функция Lambda работает внутри контейнера Docker. Когда это вызвано в первый раз, Lambda Service Сначала раскручивает новый контейнер а затем выполняет функцию внутри нее. Это Увеличивает задержку и может сделать ваше приложение медленным для пользователя изначально. После этой первоначальной задержки функция сохраняется загружается в течение определенного периода времени. В течение этого периода новые призывы не страдают от подобных задержек и чувствуют себя гораздо более отзывчивыми к клиенту.
Думайте об этом как о доступе к файлам в высокоскоростном кеше; Когда файлы не используются в течение длительных периодов времени, они вымыты из кеша. Когда вы снова запрашиваете эти файлы, открыть их требуется больше времени.
Этот процесс называется Холодный старт и это может быть решено различными способами.
Решетка представил мониторинг холодного старта, чтобы показать вам, какие призывы были холодными.
Период, в течение которого функция остается теплой, предполагается, составляет от 5 до 30 минут, но Amazon ничего не подтвердила. Если функция опирается на Eni Чтобы поговорить с другими услугами, это добавляет еще один слой задержки.
Есть еще одно осложнение, и это проблема параллелизма. Если вы получаете всплеск трафика одновременно, AWS масштабирует функцию, раскручивая больше контейнеров для обработки всех новых запросов. Это вызывает целую другую последовательность запуска холода который слишком долго не имеет никакого отношения к левым бездействием ресурсов.
Оптимизация правильного ресурса
Итак, мы перечислили довольно много проблем, теперь давайте решим несколько из них. Мы надеемся, что сочетание следующих стратегий может помочь вам достичь желаемого баланса между адаптивными приложениями и Нижние счета Анкет В конце концов, если ваша система станет вялой, никто не будет использовать ее, даже если это дешево.
1. Увеличение распределения памяти
Увеличение распределения памяти сопровождается неявным увеличением распределения процессора . Это вполне может привести к более быстрому выполнению вашей функции. Сокращение фактического времени выполнения для размещения задержек, вызванных холодными запусками, может напрямую улучшить пользовательский опыт. Более того, это самая простая гипотеза, чтобы проверить в более высоких задержек-первая линия защиты для вашей команды DevOps.
AWS выделяет больше мощности процессора, если вы выделяете больше памяти на свою функцию Lambda.
2. Сохранить функции теплыми
Еще один способ решения проблемы задержки — купить Предоставленный параллелизм для ваших функций Lambda. Предоставление параллелизма просит услугу Lambda сохранить Указанное количество контейнеров с вашей функцией тепло Таким образом, они могут быстрее реагировать на события, даже если их не вызвали в течение длительного периода времени. Когда нагрузка на реальную жизнь появляется, сотни крошечных случаев Labmda подготовлены к мощной битве.
Dashbird может помочь вам увидеть шаблоны, скрывающиеся в поведении пользователей. Используйте это, чтобы время, когда вы разминочитесь. Выполнение многочисленных запросов часто дешевле, чем увеличение памяти.
3. Оптимизируйте свой код
Возможно Самый жестокий вариант было бы попросить ваших разработчиков оптимизировать свой код. Это не обязательно включает в себя внесение изменений в реальную логику или функциональность, но часто можно обрезать зависимости и сделать функцию немного более легкой.
Это также Хорошая идея сохранить столько же работы вне тела вашей функции как это возможно. Например, настройка клиентов API или вычисление фиксированных значений из переменных среды. Таким образом, работа только замедляет холодный старт, но не последующие вызовы вашей функции.
Если возможно, вы должны придерживаться таких языков, как Node.js и Python Поскольку они значительно снижают время начала холода, чем их коллеги C# или Java.
Вы также можете Попробуйте индивидуальные время выполнения Анкет Если у вас есть очень тяжелые задачи, используя время выполнения ржавчины и реализация вашей функции в Rust может сэкономить вам достаточно денег. Тем более, что функции Lambda выставляются счета за миллисекунду, функции с высокой частотой вызова могут получить огромную прибыль от такого рефактора.
Завершая
Чтобы сделать любое из вышеперечисленных выводов правдоподобными, вам нужно знать конкретную патологию вашей неправильной и экономической функции. Затем следует задавать правильные вопросы, выдвигая образованное предположение о решении, затем Оптимизация AWS Lambdas Анкет
Решетка Помогает вам на каждом этапе пути от отслеживания тонкостей, таких как холод, начинает знать, имело ли новое решение. Конечно, есть больше параметров, таких как параллелизм и синхронность. Им понадобится гораздо более глубокое погружение. Подробнее об этом в одной из моих следующих статей!
Следите за обновлениями и Зарегистрируйтесь Следить за всем, что мы провели в этой статье.
Дальнейшее чтение:
Быстрые способы сократить стоимость вашего AWS Lambda
Библиотека событий без серверов Dashbird: Lambda Messages и отладка
Навигация в журналах CloudWatch с помощью DashBird
Использование наблюдения для масштабирования AWS Lambda [Вебинар]
Оригинал: «https://dev.to/dashbird/what-aws-lambda-metrics-should-you-definitely-be-monitoring-2glc»