Я подключил лямбду к таблице DyDB через поток.Когда запись записывается в таблицу, она запускает лямбду.Трафик очень бурный, поэтому какое-то время ничего не может случиться, тогда я напишу несколько тысяч записей.
Я вижу, что будет запущено несколько лямбда-экземпляров, но их недостаточно для обработки пакета.,Затем в случайное время число лямбда-экземпляров подскочит на порядок или два (от 2 до 90 и более), и оно наверстает упущенное.Проблема в том, что скачок может не произойти в течение 30 минут или более.
Я вижу записи, записанные в таблицу очень быстро (в секундах).Обработка лямбды 20 записей не должна занимать более 2 минут.Кажется, что лямбды проводят большую часть своего времени, сидя без дела, ожидая появления записей.Ключ записи для таблицы - GUID.
Вещи, которые я пробовал
- Играя с количеством записей, чтобы убедиться в отсутствии лямбда-таймаутов (20 кажется консервативным,но 100 вызывает тайм-ауты)
- Перемещение лямбды в другую подсеть
- Пакетная запись в таблицу (~ 500-1000 записей в пакете)
- Разделение записейв надежде, что это вызовет больше лямбд (~ 20-100 записей в пакете)
- Увеличение лямбда-памяти до максимума (3 ГБ)
- Уменьшение памяти, чтобы быть больше, чем используется (1 ГБ, 300 МБб)
Есть ли лучший шаблон для использования?Должен ли я пропустить поток и просто написать сообщения SNS?Меня не волнует порядок, но я бы предпочел не запускать работу более одного раза.