Aprende a definir el tiempo en el que tus servicios de Knative Serving deben devolver una respuesta a una solicitud. Si no se devuelve ninguna respuesta en el plazo especificado, la solicitud finaliza y se devuelve el error 504
.
Límites de tiempo de espera
El límite de tiempo de espera máximo varía en función de la versión de tu clúster de GKE.
Versión de GKE | Límite predeterminado | Límite de tiempo de espera máximo |
---|---|---|
0.16.0-gke.1 y versiones posteriores | 300 segundos | 24 horas |
0.15.0-gke.3 y versiones anteriores | 300 segundos | 900 segundos |
Además de cambiar el tiempo de espera de la solicitud de Knative Serving, debes comprobar si tu framework de lenguaje tiene su propio ajuste de tiempo de espera de la solicitud, que también debes actualizar.
Configurar y actualizar el tiempo de espera de las solicitudes
Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.
Puedes definir el tiempo de espera de las solicitudes mediante la Google Cloud consola, la CLI de Google Cloud o un archivo YAML al desplegar un servicio nuevo o actualizar uno que ya tengas y desplegar una revisión:
Consola
Ve a Knative Serving en la Google Cloud consola:
Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.
En Configuración avanzada, haga clic en Contenedor.
En el campo Tiempo de espera de la solicitud, introduce el valor de tiempo de espera que quieras usar. El valor que especifique debe ser inferior al límite de tiempo de espera de la versión de GKE del clúster.
Haz clic en Siguiente para ir a la siguiente sección.
En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.
Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.
Línea de comandos
En los servicios que ya tengas, define el tiempo de espera de las solicitudes ejecutando el comando
gcloud run services update
con el parámetro--timeout
:gcloud run services update SERVICE --timeout TIMEOUT
Sustituye:
- SERVICE con el nombre de tu servicio.
- TIMEOUT con el tiempo que quieras, usando un valor entero en segundos o un valor de duración absoluta, como
1m20s
, que equivale a 1 minuto y 20 segundos. El valor que especifiques debe ser inferior al límite de tiempo de espera de la versión de GKE del clúster. Especifica0
para asignar el valor predeterminado al tiempo de espera.
En el caso de los servicios nuevos, define el tiempo de espera de la solicitud ejecutando el comando
gcloud run deploy
con el parámetro--timeout
:gcloud run deploy SERVICE --image=IMAGE_URL --timeout TIMEOUT
Sustituye:
- SERVICE con el nombre de tu servicio.
- IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo,
gcr.io/cloudrun/hello
. - TIMEOUT con el tiempo que quieras, usando un valor entero en segundos o un valor de duración absoluta, como
1m20s
, que equivale a 1 minuto y 20 segundos. El valor que especifiques debe ser inferior al límite de tiempo de espera de la versión de GKE del clúster. Especifica0
para asignar el valor predeterminado al tiempo de espera.
YAML
Puedes descargar la configuración de un servicio en un archivo YAML con el comando gcloud run services describe
mediante la marca --format=export
.
A continuación, puedes modificar ese archivo YAML e implementar
los cambios con el comando gcloud run services replace
.
Debe asegurarse de modificar solo los atributos especificados.
Descarga la configuración de tu servicio en un archivo llamado
service.yaml
en el espacio de trabajo local:gcloud run services describe SERVICE --format export > service.yaml
Sustituye SERVICE por el nombre de tu servicio de Knative.
En su archivo local, actualice el atributo
timeoutSeconds
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
Sustituye:
- SERVICE con el nombre de tu servicio de Knative
- IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo,
gcr.io/cloudrun/hello
. - TIMEOUT con el tiempo de espera que quieras, en segundos.
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml