Превышен предел мягкой частной памяти 128 МБ с X МБ после обслуживания всего Y запросов

Я получаю ужасную ошибку Exceeded-memory-error в моем приложении App Engine, в котором задание Cron помещает несколько небольших задач в очередь.

Я не думаю, что какая-то отдельная задача должна вызывать критическую ошибку, поэтому я предполагаю, что они каким-то образом связаны; разделение памяти, которой не хватает. Я использую свою очередь с максимальной скоростью 4 / с и размером ведра 5.

Как я могу быть уверен и что я могу / должен делать?

Exceeded soft private memory limit of 128 MB with 131 MB after servicing 18 requests total
Exceeded soft private memory limit of 128 MB with 128 MB after servicing 1933 requests total
Exceeded soft private memory limit of 128 MB with 153 MB after servicing 3697 requests total

person Niklas Ternvall    schedule 24.11.2015    source источник


Ответы (2)


Вы можете отслеживать использование экземпляра памяти следующим образом (я предполагаю, что это Python):

from google.appengine.api.runtime import memory_usage
logging.warn("Memory usage:  %d MB" % (memory_usage().current()))

Вы могли сделать следующее:

  1. Уменьшите скорость выполнения задачи.
  2. Используйте экземпляры с большей памятью.
  3. Измените свой код, чтобы сделать его более эффективным. Недавно у меня возникла эта проблема с задачей в очереди задач, поэтому я уменьшил каждую задачу, а затем последовательно подключил новую задачу, чтобы продолжить работу. Когда задача завершается, сборщик мусора должен немедленно убрать за вас.
person gaefan    schedule 24.11.2015

Когда задача выполняется в течение 10 минут, она прекращается. Сообщение об ошибке для этого может несколько сбивать с толку.

person Niklas Ternvall    schedule 13.05.2016