Las instancias son las unidades de computación que App Engine usa para realizar un ajuste de escala automático de tu aplicación. En cualquier momento, tu aplicación se puede ejecutar en una o varias instancias y las solicitudes se extienden por todas ellas.
Las instancias con ajuste de escala manual deben ejecutarse de forma indefinida, pero no existe garantía de tiempo de actividad, ya que las instancias pueden obtener una finalización temprana debido a fallas o reiniciarse para las actualizaciones. Las fallas de hardware o software que generan la finalización temprana o los reinicios frecuentes pueden ocurrir sin previo aviso y su resolución puede llevar mucho tiempo.
Todas las instancias flexibles se pueden reiniciar semanalmente si hay actualizaciones disponibles. Este programa no está garantizado. Durante los reinicios, las actualizaciones que son críticas y compatibles con versiones anteriores se implementan automáticamente en el sistema operativo utilizado. La imagen de tu aplicación permanecerá igual durante los reinicios.
Verificaciones de estado
App Engine envía solicitudes periódicas de verificación de estado a fin de confirmar que una instancia se ejecuta y para verificar que se inició y está lista para aceptar solicitudes entrantes. De forma predeterminada, estas verificaciones de estado están habilitadas y se conocen como verificaciones de estado divididas. Una instancia que recibe una verificación de estado debe responder a la verificación de estado dentro de un intervalo de tiempo especificado.
Si necesitas extender el comportamiento predeterminado de las verificaciones de estado divididas a tu aplicación, puedes personalizar el archivo app.yaml
para configurar dos tipos de verificaciones:
- Las verificaciones de actividad detectan que una instancia de VM y su contenedor se ejecutan. Cuando una instancia de VM falla la verificación de funcionamiento, la instancia se reinicia de forma automática. Las verificaciones de actividad pueden fallar debido a los límites y los intervalos configurados, o a la falla del contenedor.
- Las verificaciones de preparación detectan que una instancia de VM está lista para aceptar solicitudes entrantes. Si una instancia de VM falla en la verificación de preparación, significa que no finalizó el inicio y no está lista para recibir solicitudes. Cuando la instancia de VM pasa la verificación de preparación y finaliza su inicio, se agrega al grupo de instancias disponibles.
Obtén más información sobre los comportamientos de verificaciones de estado divididas en la guía Migra a verificaciones de estado divididas.
A medida que la instancia pasa por estas verificaciones de estado, los registros de App Engine pueden indicar que la instancia se encuentra en alguno de los siguientes estados:
- En buen estado La instancia recibió las solicitudes de verificación de estado y las procesa. Un buen estado indica que la instancia tiene más de 820 MB de espacio disponible en el disco y debe responder a una verificación de estado con un código de estado HTTP de
200
. - En mal estado La instancia rechazó las solicitudes de verificación de estado y no respondió a un número específico de solicitudes de verificación de estado consecutivas. App Engine continúa enviando solicitudes de verificación de estado y reinicia la instancia si una instancia en mal estado sigue respondiendo a una cantidad predeterminada de verificaciones de estado consecutivas.
- Lameduck. La instancia está programada para cerrarse o reiniciarse.
Durante el cierre, la instancia finaliza las solicitudes en curso y rechaza las nuevas. La app muestra un código
503
para indicar que la instancia no puede manejar solicitudes. Antes de que una instancia se apague o reinicie, la secuencia de comandos de apagado tiene un período limitado para ejecutarse y no se puede configurar a fin de que sea más corta ni más larga. - App Memeduck. La instancia se prepara para entregar tráfico. La app muestra un código
503
para indicar que la instancia no puede manejar solicitudes. Cuando una instancia de VM se completó y está lista para entregar tráfico, la instancia se encuentra en buen estado y se procesan las solicitudes. Si una instancia de VM no se inicia a tiempo, la instancia cambia a mal estado y se quita.
Los comportamientos de lameduck y app lameduck son parte de un proceso normal que pasa la instancia de VM.
Supervisa el uso de recursos
La página Instancias de la consola de Google Cloud te permite visualizar el rendimiento de las instancias. Puedes ver el uso de la memoria y la CPU de cada instancia, el tiempo de actividad, la cantidad de solicitudes y otras estadísticas. También puedes iniciar de forma manual el proceso de cierre para cualquier instancia.
NTP con entorno flexible de App Engine
El entorno flexible de App Engine tiene servicios de protocolo NTP que usan servidores NTP de Google. Sin embargo, los servicios de NTP del entorno flexible no se pueden editar.
Ubicación de instancias
Las instancias se ubican automáticamente por región geográfica según la configuración del proyecto.
Escalamiento de instancias
Mientras se ejecuta una aplicación, las solicitudes entrantes se enrutan hacia instancias nuevas o existentes de las versiones o los servicios correspondientes. Cada versión activa debe tener al menos una instancia en ejecución y el tipo de escalamiento de un servicio o versión controla cómo se crean las instancias adicionales.
Debes especificar el tipo de escalamiento en el archivo app.yaml
de la app.
De forma predeterminada, la app usa el ajuste de escala automático, lo que significa que App Engine administrará la cantidad de instancias inactivas.
- Ajuste de escala automático
- El ajuste de escala automático crea instancias según el porcentaje de solicitudes, las latencias de respuesta y otras métricas de la aplicación. Puedes especificar umbrales para cada una de estas métricas, así como una cantidad mínima de instancias que deben seguir ejecutándose en todo momento mediante la configuración del elemento
automatic_scaling
.
- Ajuste de escala manual
- El ajuste de escala manual especifica la cantidad de instancias que se ejecutan de forma continua sin importar el nivel de carga. Esto permite ejecutar tareas como inicializaciones y aplicaciones complejas que se basan en el estado de la memoria en el tiempo.