Почему мои экземпляры Google AppEngine сбой "код ошибки 121"?

Я уже давно запускаю веб-приложение с высокой репликацией Java в Google AppEngine. Около двух дней назад - в основном из ниоткуда - многие запросы начали давать сбой с HTTP-статусом 500 и кодом ошибки 121, что означает, что соответствующий экземпляр GAE аварийно завершает работу или отключается.

Вот примерная запись в журнале, которой я сейчас обладаю:

2013-02-15 06:44:00.909 /api 500 3770ms 0kb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
###.###.###.### - - [14/Feb/2013:22:44:00 -0800] "POST /api HTTP/1.1" 500 0 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17" "###.########.###" ms=3770 cpu_ms=1191 exit_code=121 instance=00c61b117c2c2b8fd8c433bc45a62183829f6484

W 2013-02-15 06:44:00.652
    A problem was encountered with the process that handled this request, causing it to exit. This is likely to cause a new process to be used for the next request to your application. (Error code 121)

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

2013-02-15 06:40:02.779 /_ah/warmup 500 2970ms 0kb
0.1.0.3 - - [14/Feb/2013:22:40:02 -0800] "GET /_ah/warmup HTTP/1.1" 500 0 - - "2013-02-14-1438.flox-by-gamua.appspot.com" ms=2971 cpu_ms=671 loading_request=1 exit_code=121 instance=00c61b117c48cb17ea555d1988c0db473c2390

I 2013-02-15 06:40:02.437
    This request caused a new process to be started for your application and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.
W 2013-02-15 06:40:02.437
    A problem was encountered with the process that handled this request, causing it to exit. This is likely to cause a new process to be used for the next request to your application. (Error code 121)

Я искал в Интернете эту проблему, и похоже, что это произошло раньше: https://code.google.com/p/googleappengine/issues/detail?id=7348.

Поскольку все соответствующие проблемы были помечены как "решенные", я подал новую проблему с производством GAE здесь: https://code.google.com/p/googleappengine/issues/detail?id=8812

Изменить 2013-04-29: Приведенная выше ссылка больше не работает, поскольку эта проблема была помечена командой "GAE" как "Ограниченная".

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

Кто-нибудь знает, что вызывает код ошибки 121? Есть ли какая-то форма документации? Что-то не так с моим приложением? Есть ли способ убедить команду AppEngine разобраться в этой проблеме?

Большое спасибо!

Ответ 1

У меня недостаточно баллов для ответа, но у меня есть конкретный пример использования, который кажется интересным:

  • python27
  • хрд
  • динамическая поддержка с 8 экземплярами

Все работает так, как ожидалось, за исключением одного экземпляра, instance = 2, который в основном циклически выполняет

  • '/_ ах/старт'
  • (код ошибки 121)
  • '/_ ах/остановка'

Backends позволяет вам обращаться к конкретному экземпляру, например 2.backendname.appname.appspot.com, и, видимо, что-то не так с этим экземпляром.

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

Ответ 2

Проверьте лимиты хранения журнала и не превысите их. Вы не ожидали бы, что в обход ограничений на сохранение журналов возникнет исключение, из-за которого экземпляр завершится неудачей, но после того, как я увеличил свою активность, я перестал видеть эту ошибку, и мои бэкэндовые задания cron смогли завершить.

Ответ 3

Не видели ничего об этом от Google. Они часто стесняются объяснять такие проблемы. В одном из потоков упоминается миграция хранилища данных. Посмотрите, помогает ли это;

http://code.google.com/p/googleappengine/issues/detail?id=7022