ETIMEDOUT, когда лямбда-функция вставляет данные в RDS - PullRequest
1 голос
/ 14 марта 2019

Я использую Lambda для вставки данных в RDS.У меня ~ 1000 записей.Тем не менее, я получаю следующую ошибку при тестировании функции.Когда я проверяю базу данных, только некоторые (~ 160) записей успешно вставлены.Я не могу найти никакой полезной информации об этом, потому что я успешно подключаюсь к базе данных.

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

{
  "cause": {
    "errorno": "ETIMEDOUT",
    "code": "ETIMEDOUT",
    "syscall": "connect",
    "fatal": true
  },
  "isOperational": true,
  "errorno": "ETIMEDOUT",
  "code": "ETIMEDOUT",
  "syscall": "connect",
  "fatal": true
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

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

Кроме того, убедитесь, что вы инициируете соединения db внутри лямбда-обработчика.Это гарантирует, что соединения БД всегда создаются при запуске лямбда-функции, и вы никогда не получите никаких проблем Connection closed при повторном использовании лямбда-контейнера

0 голосов
/ 14 марта 2019

Вы можете попробовать это, чтобы установить таймаут в вашей базе данных:

для просмотра тайм-аута:

show VARIABLES like '%timeout%'

Настройка:

SET GLOBAL connect_timeout=28800
SET GLOBAL wait_timeout=28800
SET GLOBAL interactive_timeout=28800
...