В первой статье нашей небольшой серии мы рассмотрели, как разрабатывать и развертывать функцию Lambda с использованием образа контейнера Docker и среды выполнения Java. Мы рассмотрели два варианта использования:
В этой статье мы измерим холодный и горячий запуск функции Lambda, используя этот подход, используя образ базового контейнера Docker AWS Lambda.
Для наших измерений мы будем использовать пример приложения из первой части и среду выполнения Java 21 для наших функций Lambda. Для всех функций Lambda мы выделяем 1024 МБ памяти и используем JAVA_TOOL_OPTIONS: "-XX: TieredCompilation -XX:TieredStopAtLevel=1", так как этот вариант компиляции обеспечивает очень хорошее соотношение времени холодного и горячего запуска.
Результаты приведенного ниже эксперимента были основаны на воспроизведении более 100 холодных и примерно 100 000 теплых запусков в течение 1 часа с помощью функции Lambda GetProductByIdWithPureJava21GraalVMNativeImageLambda, которая сопоставлена с классом обработчика Java Lambda, который отвечает за получение продукта (сохраненного в DynamoDB) по идентификатору. Для этого я использовал инструмент нагрузочного тестирования, но вы можете использовать любой инструмент, который захотите, например Serverless-artillery или Postman.
Время холодного (c) и теплого (m) старта в мс:
c стр.50 | c стр.75 | c стр.90 | c стр.99 | c стр.99.9 | максимум | стр50 | w стр75 | w стр90 | w стр.99 | w p99.9 | макс |
---|---|---|---|---|---|---|---|---|---|---|---|
3093,26 | 3219,44 | 3314.12 | 4632,16 | 6513,35 | 6517,71 | 5,47 | 6.20 | 7,39 | 17.14 | 43.03 | 1386.07 |
В этой статье мы измерили время холодного и горячего запуска функции Lambda, используя этот подход, используя образ базового контейнера Docker AWS Lambda. Мы испытали довольно значительное время холодного запуска и довольно конкурентоспособное время горячего запуска по сравнению с измерением холодного и горячего запуска с помощью Java 21 с использованием различных настроек памяти Lambda для Lambda с памятью 1024 МБ и управляемой средой выполнения Lambda Java 21.
AWS Lambda SnapStart, который значительно сокращает время холодного запуска, в настоящее время доступен только для управляемых сред выполнения Java Corretto (11, 17 и 21), но не для образов контейнеров Docker. Вы можете изучить инструмент jlink для сборки и оптимизации набора модулей и их зависимостей в меньший по размеру собственный образ среды выполнения и совместного использования данных классов (CDS), что помогает сократить время запуска приложений на языке программирования Java, в частности небольших приложений, а также уменьшить занимаемую площадь. Преимущество использования образа Docker в качестве артефакта развертывания для Java заключается в возможности использовать новейшую среду выполнения Java, например Java 22 (Java 23 будет выпущена в сентябре 2024 г.).
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3