2015-11-24 2 views
1

Я получаю страшную ошибку с превышением памяти в моем приложении App Engine, которое имеет задание Cron, задающее несколько небольших задач в очередь.Превышение предела мягкой частной памяти 128 МБ с X МБ после обслуживания запросов Y всего

Я не думаю, что какая-либо одна задача должна вызвать критическую ошибку, поэтому я предполагаю, что они каким-то образом связаны; разделяя память, которая отсутствует. Я запускаю свою очередь с максимальной скоростью 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 

ответ

-1

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

2

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

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

Вы можете сделать следующее: скорость задачи

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