ошибка 204 в API Google App Engine в java

У нас есть API с Google App Engine. API состоит из поисковой системы, когда пользователь запрашивает идентификатор продукта, API возвращает json с группой других идентификаторов продукта (с определенными критериями). Это текущая конфигурация:

<instance-class>F4_1G</instance-class>
<automatic-scaling>
<min-idle-instances>3</min-idle-instances>
<max-idle-instances>automatic</max-idle-instances>
<min-pending-latency>automatic</min-pending-latency>
<max-pending-latency>automatic</max-pending-latency>    
</automatic-scaling>

Мы используем app_engine_release=1.9.23

Процесс происходит следующим образом. У нас есть два обращения к хранилищу данных и обращение к urfetch (к внешнему API).

Проблема заключается в том, что время от времени мы получаем en error 204 с такой трассировкой:

ms=594 cpu_ms=0 exit_code=204 app_engine_release=1.9.23 Возникла проблема с процессом, который обрабатывал этот запрос, что привело к его завершению. Это может привести к использованию нового процесса для следующего запроса к вашему приложению. (Код ошибки 204)

Вот что мы получили в клиенте:

{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": ""
}
],
"code": 503,
"message": ""
}
}

Мы изменили количество резидентных экземпляров с 3 до 7 и получили ту же ошибку. Также ошибки возникают в одних и тех же экземплярах. Мы видим 4 ошибки за очень небольшой промежуток времени.

Мы обнаружили, что проблема заключалась в вызове urlfecth. Если мы ставим высокий таймаут, то он возвращает много ошибок.

любая идея, почему это происходит???


person Cookie Monster    schedule 12.07.2015    source источник
comment
в логах что-то отображается?   -  person jirungaray    schedule 13.07.2015
comment
@jirungaray журналы показали следующее: возникла проблема с процессом, который обрабатывал этот запрос, что привело к его завершению. Это может привести к использованию нового процесса для следующего запроса к вашему приложению. (Код ошибки 204)   -  person Cookie Monster    schedule 14.07.2015


Ответы (1)


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

Что я сделал, чтобы избавиться от ошибки, так это удалил конечную точку облака из Google и использовал простой сервлет. Я обнаружил, что смешивая сервлет с вызовом urfetch, мы не получаем ошибку, поэтому проблема может быть связана не только с urfetch, но и с комбинацией urfetch и конечной точки облака Google.

person Cookie Monster    schedule 14.07.2015