2

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

<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

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

Проблема состоит в том, что время от времени мы получаем ен ошибки 204 с этой трассы:

мс = 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. Если мы установим высокий тайм-аут, тогда он вернет много ошибок.

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

+0

все, что отображается в журналах? – jirungaray

+0

@jirungaray журналы показали это: возникла проблема с процессом, который обрабатывал этот запрос, вызывая его выход. Вероятно, это приведет к тому, что новый процесс будет использоваться для следующего запроса вашего приложения. (Код ошибки 204) –

ответ

3

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^