Облачной функции Firebase необходим предел памяти для «приращения» - PullRequest
0 голосов
/ 07 июля 2019

Я реализовал несколько счетчиков в своем проекте, используя новый increment API.Есть две функции, реализация которых проста в одну строку:

exports.MY_FUNC = functions.firestore.document('/PATH_TO_DOC/{id}').onCreate((snapshot, context) => {
    return admin.firestore().collection('COUNTERS').doc('DOC').update({COUNTER: admin.firestore.FieldValue.increment(1)});
});

(все в CAPS является общей заменой фактических значений, которые у меня есть).

Эта функция работает отлично.Однако каждый день бывают случаи, когда происходит сбой с сообщением «Ошибка: превышен лимит памяти. Вызов функции был прерван».Меня это озадачивает, так как большую часть времени он работает правильно.

Я знаю, как увеличить предел памяти, и сейчас я собираюсь увеличить его до 512 МБ.Однако мне не нравится непредсказуемость этой установки.Несомненно, одна и та же функция, работающая со счетчиком на одном и том же документе, должна либо правильно работать с 256 МБ, либо каждый раз выходить из строя.

Я также весьма ошеломлен тем, что для операции, которая помещается в одну строку, может потребоваться более 256 МБ.У меня есть другие функции, которые выполняют 3-4 различных шага (чтение, запись), и они корректно работают с 256 МБ.

Учитывая непредсказуемость, теперь я волнуюсь, что 512 МБ также может быть недостаточно.К сожалению, похоже, что в документах не упоминаются требования к памяти для increment API, поэтому, похоже, мой единственный вариант - развернуть и посмотреть, достаточен ли новый предел памяти.

Буду признателен, если кто-нибудьбыли какие-либо предложения по любым пунктам ниже:

  1. Есть ли способ обеспечить согласованное поведение?Я хочу, чтобы функция каждый раз выходила из строя, если недостаточно 256 МБ, или каждый раз, если этого достаточно, выполнялась успешно.

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

Спасибо за любой ввод.

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