С прошлого месяца мы начали сталкиваться с этой проблемой, когда серверная часть AppEngine случайным образом прекращает обработку любой работы.
Ближайшие другие Qs, которые я видел, это это и это , но ничего бесполезного.
Моя конфигурация push-очереди
<queue>
<name>MyFetcherQueue</name>
<target>mybackend</target>
<rate>30/m</rate>
<max-concurrent-requests>1</max-concurrent-requests>
<bucket-size>30</bucket-size>
<retry-parameters>
<task-retry-limit>10</task-retry-limit>
<min-backoff-seconds>10</min-backoff-seconds>
<max-backoff-seconds>200</max-backoff-seconds>
<max-doublings>2</max-doublings>
</retry-parameters>
</queue>
Стандартный Java App Engine с несколькими модулями, один из которых является бэкэндом с базовым масштабированием, B4.
<runtime>java8</runtime>
<threadsafe>true</threadsafe>
<instance-class>B4</instance-class>
<basic-scaling>
<max-instances>2</max-instances>
</basic-scaling>
Обратите внимание, просто для решения этой проблемы я пробовал следующее, но безрезультатно:
- Обновлен Java с 7 до 8 - не работает
- Изменено с более раннего B1 на B4 - (думая, что это может быть проблема с памятью, но ничего такого в журналах) - не работало
- Изменена скорость обработки очереди до 15 / м с размером сегмента 15.
- Изменено максимальное количество экземпляров с более ранних 1 на 2 в надежде, что если хотя бы один экземпляр зависнет, другой должен быть в состоянии обработать, но безрезультатно. Я заметил (сегодня), что когда возникла эта проблема, у 2-го экземпляра было только 2 запроса (у другого было более 1400), но новый экземпляр не забрал оставшиеся задачи из очереди. Задача ETA только увеличивалась.
- Обновлен Java Appengine sdk с более ранней версии 1.9.57 до последней версии 1.9.63
Поведение: Через некоторое время (почти один раз в день) Бэкэнд просто перестанет отвечать, и задачи в этой очереди останутся как есть. Единственный способ продолжить - убить внутренний экземпляр из консоли, после чего новый экземпляр начинает обрабатывать задачи. Эти задачи являются простыми http-вызовами для получения данных. Очередь обычно имеет от 1 задачи до 15-20 в любое время. Заметил, что даже при 3-4, он иногда останавливается.
В журналах вообще ничего не показано, ничего не прокручивается. Только когда удален внутренний экземпляр, журнал покажет, что / задача была прервана через консоль. Нет нехватки памяти, нет сбоев, нет 404.
Более ранние логи и скриншоты, которые я сделал:
Я не могу добавить больше изображений, но вот для Использование , Использование памяти & Самое недавнее использование памяти , после чего я удалил Экземпляр и задачи возобновились.
Этот и другие недавние события потрясли мою веру в Google App Engine. Что я делаю неправильно? (Эта точная настройка бэкэнда B1 с настройкой очереди работала много лет назад!)