Облачные функции GCP - потребление памяти - PullRequest
0 голосов
/ 24 января 2019

Как Cloud Functions вычисляет потребление памяти?

Это общий объем памяти всех функций, которые в данный момент выполняются в данный момент?

Допустим,

Всего памяти выделено 512 МБ.

3 запущенных функции по 60 МБ каждая.

Означает ли это, что мы используем в общей сложности 180 МБ?Или каждая функция получает собственное потребление памяти?

Я получаю график, который выглядит следующим образом для потребления памяти:

enter image description here

Объекты не являются постоянными, и я не пишу в локальные файлы, поэтому мне интересно, есть ли где-нибудь проблема.

Каждый раз, когда я внедряю новую функцию, потребление памяти уменьшается, но затем с увеличениемвызовы потребление памяти увеличивается, пока я не вижу ошибку превышения предела памяти.

1 Ответ

0 голосов
/ 24 января 2019

Каждый вызов функции выполняется в своем собственном экземпляре сервера. Продолжительность и использование памяти за это время вызова этой функции используются для выставления счетов.

Отдельный экземпляр сервера облачных функций не обрабатывает вызовы параллельно. Только в сериале. Каждый вызов функции оплачивается индивидуально. Функции могут вызываться параллельно, только если Cloud Functions определяет, что несколько экземпляров лучше всего справляются с нагрузкой на функцию.

Если вы сохраняете что-либо вообще в глобальном пространстве памяти без его освобождения, то это выделение памяти будет учитываться в будущих вызовах этой функции в этом экземпляре сервера, пока этот экземпляр не будет закрыт по какой-либо причине. Чтобы минимизировать использование памяти, размещайте объекты только локально, которые будут очищены после завершения функции. Утечки памяти часто трудно обнаружить.

Не видя код вашей функции и не понимая, как она используется, невозможно полностью объяснить график, который вы видите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...