Исправление скорости или альтернативы в lambda @ edge - PullRequest
0 голосов
/ 25 апреля 2019

У меня lambda @ edge работает по запросу клиента.Я сбрасываю сообщения в SQS для обработки другой лямбдой.

Первый запуск моего скрипта после обновления очень длинный - часто проходит через пять секунд, что не очень удобно для пользователя.

Большая часть этого загружается в AWS SDK, постоянно выше 2,5 секунд

var timerstart = new Date();
var timercheck = new Date();
console.log("Time check: 0");

const AWS = require('aws-sdk');

timercheck = new Date();
console.log("Time check - AWS sdk loaded: ", timercheck - timerstart);

Я также загружаю https

const https = require('https');

, что занимает около 120 мсек в первый раззапустить.

Многие последующие запуски полностью завершаются за миллисекунду, немногие превышают 5 мс.

Кто-нибудь еще имел эту проблему - и, надеюсь, нашел способ ее преодолеть?Я ничего не нахожу через гуглфу.Понимание несоответствия между первым и последующим запусками было бы полезно.

Сумасшедшая идея

@ jogold приведет к интересному прочтению.

Почему-то я подумал, что было бы интересно разместить запрос вне экспорта.

От:

'use strict';
exports.handler = async (event, context, callback) => {
    const AWS = require('aws-sdk');
    //... stuff

До:

'use strict';
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
    //... stuff

При первом (довольно определенном) холодном пуске время первой проверки теперь составляет около 300 мс.Возможно, это просто то, о чем все остальные знают, и пробел в моих знаниях о NodeJS, но если кто-то еще придет искать проблемы со временем выполнения Lambda @ Edge, то вам пора.

1 Ответ

1 голос
/ 25 апреля 2019

Это называется Холодный старт .

Посмотрите на Все, что вам нужно знать о холодных запусках в AWS Lambda .

Если это важно, вам следует подумать о предварительном прогреве ваших функций.

...