У меня есть лямбда "оркестратор", которая принимает список параметров и синхронно вызывает "лямбду" работника для каждого параметра в этом списке. Затем оркестратор ожидает завершения всех рабочих лямбд и возвращает совокупный результат. Оркестратору передан список, содержащий 122 элемента, и я столкнулся с некоторым странным поведением.
Когда я тестирую лямбду-оркестратор на моей хост-машине, она работает безупречно, параллельно вызывая все 122 рабочих лямбды и возвращая результат. Это завершается примерно за 1 минуту, что соответствует продолжительности самого длительного вызова отдельного работника. Это имеет смысл, поскольку все лямбды вызываются параллельно.
Но когда я запускаю лямбда-оркестратор в лямбда-среде, кажется, что он работает с ухудшенной производительностью. Я собрал метрики производительности, которые показывают, что локальная версия возвращает ~ 9 результатов / секунду, а версия с лямбда-кодом возвращает ~ 2 результата / секунду. Пожалуйста, см. Прилагаемые графики, которые иллюстрируют это.
На моем локальном хосте и в лямбда-среде используется одна и та же версия python (3.7.4), с 1,7 ГБ памяти и одним полным vCPU, выделенным для обоих оркестратора и рабочие лямбды. Для справки, код для лямбда-оркестратора здесь и здесь .
Локальное исполнение:
Производительность Lambda:
![Lambda-hosted performance](https://i.stack.imgur.com/DsXjV.png)
Чем можно объяснить это несоответствие производительности между локальной и Lambda-версиями?