Google Cloud Function из-за ошибки памяти не имеет смысла - PullRequest
0 голосов
/ 22 апреля 2020

Вопрос:

Знаете ли вы, как реально контролировать, сколько памяти используется GCF (Node.js 8)?
Есть ли у вас рекомендации относительно профилирования памяти в облачных функциях Google? (даже локально) для Node.js 8?

Контекст:

Я развернул облачную функцию Google (NodeJS) с 128 МБ памяти, которая раньше работала довольно хорошо.

Сегодня он не может сказать "Error: memory limit exceeded.".

GCP сообщает мне, что функция не использует более 58 МБ, но она не работает с ошибкой памяти, когда она имеет 128 МБ.

Я чувствую себя потерянным и испорченным, потому что:

  1. Раньше это работало, и с тех пор я ничего не менял.
  2. Кажется, я не могу доверять Google, когда дело доходит до мониторинга потребления памяти

  3. Экран «Подробности» функции показывает, что он потребляет не более 58 МБ.

  4. Панель инструментов, которую я создал в Мониторинг для мониторинга, показывает те же значения. Screenshot from the dashboard
  5. Тем не менее он не работает с ограничением памяти. Logs of the function

Я уже видел этот вопрос Профилировщик памяти для облачной функции Google? , но Stackdriver Profiler, похоже, не работает для GCF ( за дел c)

1 Ответ

0 голосов
/ 23 апреля 2020

Установка выделения памяти в облачных функциях из Google Cloud Console.

Из документации :

Чтобы установить выделение памяти и тайм-аут в Консоль Google Cloud Platform:

  1. В консоли Google Cloud Platform выберите Cloud Functions в левом меню.
  2. Выберите функцию, щелкнув ее имя в функциях list.
  3. Щелкните значок «Редактировать» в верхнем меню.
  4. Выберите выделение памяти в раскрывающемся меню с пометкой «Выделенная память».
  5. Нажмите Еще, чтобы отобразить дополнительные параметры и введите количество секунд в текстовом поле Timeout.
  6. Нажмите кнопку Сохранить, чтобы обновить функцию.

Что проверить на утечки памяти (очень сложно для устранения неполадок):

Концепции облачной функции Концепции автоматического масштабирования и параллелизма

Каждый экземпляр функции обрабатывает только один параллельный запрос одновременно. Это означает, что пока ваш код обрабатывает один запрос, нет возможности направить второй запрос в один и тот же экземпляр. Таким образом, исходный запрос может использовать весь объем ресурсов (ЦП и память), который вы запросили.

Мониторинг облачных функций

Это доступные ресурсы для мониторинга ваших облачных функций :

...