Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Síntoma
La aplicación cliente recibe un error de tiempo de espera para las solicitudes a la API o la solicitud finaliza. de forma abrupta mientras la solicitud a la API se sigue ejecutando en Apigee.
Observarás el código de estado 499
para esas solicitudes a la API en la supervisión de API.
Registros de acceso de NGINX. A veces, verás diferentes códigos de estado en las estadísticas de la API porque
muestra el código de estado que muestra Message Processor.
Mensaje de error
Las aplicaciones cliente pueden ver errores como los siguientes:
curl: (28) Operation timed out after 6001 milliseconds with 0 out of -1 bytes received
¿Qué provoca tiempos de espera del cliente?
La ruta típica de acceso a una solicitud a la API en la plataforma perimetral es Cliente > Router > Procesador de mensajes > Backend Server, como se muestra en la siguiente figura:
Los routers y procesadores de mensajes de la plataforma Apigee Edge se configuran con los valores de tiempo de espera predeterminados para garantizar que las solicitudes a la API no tarden demasiado en completarse.
Tiempo de espera en el cliente
Las aplicaciones cliente se pueden configurar con un valor de tiempo de espera adecuado según tus necesidades.
Algunos clientes, como los navegadores web y las apps para dispositivos móviles, tienen tiempos de espera definidos por el sistema operativo.
Tiempo de espera en el router
El tiempo de espera predeterminado configurado en los routers es de 57 segundos. Esta es la cantidad máxima de tiempo que El proxy de API puede ejecutarse desde que se recibe la solicitud a la API en Edge hasta que la respuesta se que se envían de vuelta, incluida la respuesta del backend y todas las políticas que se ejecutan. Predeterminado el tiempo de espera se puede anular en los routers y hosts virtuales, como se explica en Configura el tiempo de espera de E/S en los routers.
Tiempo de espera en los procesadores de mensajes
El tiempo de espera predeterminado configurado en Message Processor es de 55 segundos. Esta es la cantidad máxima de tiempo que puede tardar el servidor backend en procesar la solicitud y responder al Mensaje Procesador. El tiempo de espera predeterminado se puede anular en Message Processor o en la API Proxy como se explica en Configura el tiempo de espera de E/S en los procesadores de mensajes.
Si el cliente cierra la conexión con el router antes de que se agote el tiempo de espera del proxy de API, tú
observará el error de tiempo de espera para la solicitud específica a la API. El código de estado 499 Client
Closed Connection
se registra en el router para esas solicitudes, lo que se puede observar en la API.
Monitoring y NGINX Access.
Causas posibles
En Edge, estas son las causas típicas del error 499 Client Closed Connection
:
Causa | Descripción | Instrucciones de solución de problemas aplicables para |
---|---|---|
El cliente cerró la conexión de forma abrupta | Esto sucede cuando el cliente cierra la conexión debido a que el usuario final cancela el solicitud antes de que se complete. | Usuarios de nubes públicas y privadas |
Tiempo de espera de la aplicación cliente | Esto sucede cuando se agota el tiempo de espera de la aplicación cliente antes de que el proxy de API tenga tiempo y envía la respuesta. Esto suele suceder cuando el tiempo de espera del cliente es menor que el tiempo de espera del router. | Usuarios de nubes públicas y privadas |
Pasos comunes de diagnóstico
Usa una de las siguientes herramientas o técnicas para diagnosticar este error:
- Supervisión de API
- Registros de acceso de NGINX
Supervisión de API
Para diagnosticar el error con la supervisión de API, haz lo siguiente:
- Navega a Analyze > Supervisión de API > Investigar.
- Filtra en busca de
4xx
errores y selecciona el período. - Traza el Código de estado (Status Code) en comparación con la Hora (Time).
- Selecciona una celda que tenga errores
499
, como se muestra a continuación: - Verás la información sobre el error
499
en el panel de la derecha como se indica a continuación: como se muestra a continuación: - En el panel de la derecha, haz clic en Ver registros.
En la ventana Registros de tráfico, observa los siguientes detalles para algunos
499
errores:- Solicitud:Proporciona el método de solicitud y el URI que se usaron para realizar las llamadas.
- Tiempo de respuesta:Proporciona el tiempo total transcurrido para la solicitud.
También puedes obtener todos los registros con la API de Monitoring GET de registros. Para Por ejemplo, consultando los registros de
org
,env
,timeRange
ystatus
, podrás descargar todas las registros de transacciones en las que se agotó el tiempo de espera del cliente.Dado que la supervisión de API establece el proxy en
-
para HTTP499
errores, puedes usar la API (API de Registros) para obtener para el host virtual y la ruta de acceso.For example :
curl "https://apimonitoring.enterprise.apigee.com/logs/apiproxies?org=ORG&env=ENV&select=https://VIRTUAL_HOST/BASEBATH" -H "Authorization: Bearer $TOKEN"
- Revisa el Tiempo de respuesta de los errores
499
adicionales y verifica si el tiempo de respuesta es coherente (supongamos 30 segundos) en todas las Errores499
.
Registros de acceso de NGINX
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres usuario de una nube privada, puedes usar los registros de acceso de NGINX para determinar
la información clave sobre los errores
499
de HTTP. - Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Realiza una búsqueda para ver si hay errores
499
durante una duración específica (si el problema ocurrió en el pasado) o si todavía hay solicitudes que fallan499
- Ten en cuenta la siguiente información para algunos de los errores
499
:- Tiempo total de respuesta
- URI de solicitud
- Usuario-agente
Error 499 de muestra del registro de acceso de NGINX:
2019-08-23T06:50:07+00:00 rrt-03f69eb1091c4a886-c-sy 50.112.119.65:47756 10.10.53.154:8443 10.001 - - 499 - 422 0 GET /v1/products HTTP/1.1 - okhttp/3.9.1 api.acme.org rrt-03f69eb1091c4a886-c-sy-13001-6496714-1 50.112.119.65 - - - - - - - -1 - - dc-1 router-pod-1 rt-214-190301-0020137-latest-7d 36 TLSv1.2 gateway-1 dc-1 acme prod https -
En este ejemplo, vemos la siguiente información:
- Tiempo de respuesta total:
10.001
segundos. Esto indica que el Se agotó el tiempo de espera del cliente después de 10.001 segundos - Solicitud:
GET /v1/products
- Presentador:
api.acme.org
- Usuario-agente:
okhttp/3.9.1
- Verifica si el Tiempo de respuesta total y el Usuario-agente coinciden.
en todos los errores
499
.
Causa: El cliente cerró la conexión de forma abrupta
Diagnóstico
- Cuando se llama a una API desde una aplicación de una sola página que se ejecuta en un navegador o una aplicación el navegador anulará la solicitud si el usuario final cierra el navegador de repente, navega a otra página web en la misma pestaña o que detiene la carga al hacer clic o presionar dejar de cargar.
- Si esto sucede, las transacciones con el estado HTTP
499
normalmente variarían en el tiempo de procesamiento de la solicitud (tiempo de respuesta) de cada una de las solicitudes. -
Para determinar si esta es la causa, puedes comparar el Tiempo de respuesta y verificar si
es diferente para cada uno de los errores
499
que usan API Monitoring o NGINX Access registros, como se explica en Pasos comunes del diagnóstico.
Solución
- Esto es normal y no suele ser un motivo de preocupación si se produce un error HTTP
499
suceden en pequeñas cantidades. -
Si ocurre con frecuencia en la misma ruta de URL, podría deberse a que el proxy específico asociados con esa ruta es muy lenta y los usuarios no están dispuestos a esperar.
Una vez que sepas qué proxy puede verse afectado, usa el Latencia panel de análisis para investigar con más detalle qué causa la latencia del proxy.
- En este caso, determine qué proxy se ve afectado siguiendo los pasos que se indican en Pasos comunes del diagnóstico.
- Utiliza el Panel de análisis de latencia para investigar en más detalle qué causa la latencia del proxy solucionar el problema.
- Si descubres que la latencia es la esperada para el proxy específico, entonces es posible para informar a los usuarios que este Proxy tardará un tiempo en responder.
Causa: Se agotó el tiempo de espera de la aplicación cliente
Esto puede ocurrir en varias situaciones.
-
Se espera que la solicitud tarde un tiempo determinado (por ejemplo, 10 segundos) en completarse
en condiciones normales de funcionamiento. Sin embargo, la aplicación cliente está configurada con un
tiempo de espera (supongamos 5 segundos) que hace que la aplicación cliente agote el tiempo de espera antes de
se completa la solicitud a la API, lo que lleva a
499
. En este caso, debemos configurar del tiempo de espera del cliente a un valor adecuado. - Un servidor de destino o texto destacado está tardando más de lo esperado. En este caso, debes corregir el error el componente adecuado y ajustar los valores del tiempo de espera de manera apropiada.
- El cliente ya no necesitaba la respuesta y, por lo tanto, se anuló. Esto puede suceder con altos niveles de de frecuencia, como autocompletar o sondeo corto.
Diagnóstico
Registros de acceso de NGINX o supervisión de API
Diagnostica el error con la supervisión de API o los registros de acceso de NGINX:
- Verifica los registros de supervisión de API o los registros de acceso de NGINX para las transacciones HTTP
499
como se explica en Pasos comunes del diagnóstico. - Determina si el Tiempo de respuesta es coherente para todos los errores
499
. - Si es así, podría deberse a que una aplicación cliente en particular configuró un tiempo de espera fijo.
por su parte. Si un proxy de API o un servidor de destino responde lentamente, el cliente agotaría el tiempo de espera.
antes de que se agote el tiempo de espera del proxy, lo que genera grandes cantidades de
499s
de HTTP para el misma ruta de URI. En este caso, determina el usuario-agente de los registros de acceso de NGINX que puede ayudarte a determinar la aplicación cliente específica. - También podría ser posible que haya un balanceador de cargas frente a Apigee, como Akamai, F5, AWS ELB, etcétera. Si Apigee se ejecuta detrás de un balanceador de cargas personalizado, la solicitud del balanceador de cargas debe configurarse de modo que sea superior al tiempo de espera de la API de Apigee. De De forma predeterminada, se agota el tiempo de espera del router de Apigee después de 57 segundos, por lo que es adecuado configurar una solicitud de 60 segundos en el balanceador de cargas.
Trace
Diagnostica el error con Trace
Si el problema sigue activo (499
todavía se producen errores), realiza lo siguiente:
los siguientes pasos:
- Habilita el sesión de seguimiento para la API afectada en la IU de Edge.
- Espera a que se produzca el error o, si tienes la llamada a la API, realiza algunas llamadas a la API. y reproducirlo.
- Comprueba el tiempo transcurrido en cada fase y toma nota de la fase en la que la mayor parte del tiempo se agota el tiempo de respuesta.
- Si observas el error con el tiempo transcurrido más largo inmediatamente después de uno de
fases, indica que el servidor de backend está lento o tarda mucho tiempo
para procesar la solicitud:
- Se envió la solicitud al servidor de destino
- Política ServiceCallout
A continuación, se muestra un ejemplo de seguimiento de la IU en el que se muestra el Tiempo de espera de puerta de enlace después de que se finalizaba la Solicitud. enviados al servidor de destino:
Solución
- Consulta Prácticas recomendadas para configurar el tiempo de espera de E/S y comprender qué valores de tiempo de espera se deben establecer sobre diferentes componentes involucrados en el flujo de solicitudes a la API a través de Apigee Edge.
- Asegúrate de establecer un valor de tiempo de espera adecuado en la aplicación cliente según prácticas recomendadas.
Si el problema persiste, ve a Debes recopilar información de diagnóstico .
Se debe recopilar información de diagnóstico
Si el problema persiste, recopila la siguiente información de diagnóstico y, luego, comunícate con el equipo de asistencia de Apigee Edge.
Si eres usuario de la nube pública, proporciona la siguiente información:
- Nombre de la organización
- Nombre del entorno
- Nombre del proxy de API
- Completa el comando
curl
que se usa para reproducir el error de tiempo de espera - Archivo de seguimiento de las solicitudes a la API para las que ves errores de tiempo de espera del cliente
Si eres usuario de la nube privada, proporciona la siguiente información:
- Mensaje de error completo observado para las solicitudes fallidas
- Nombre del entorno
- Paquete de proxy de API
- Archivo de seguimiento de las solicitudes a la API para las que ves errores de tiempo de espera del cliente
- Registros de acceso de NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
) - Registros del sistema del procesador de mensajes (
/opt/apigee/var/log/edge-message-processor/logs/system.log
)