Google App Engine – escala automática con siempre en instancia?

Una de las cosas más irritantes sobre el uso de GAE para una nueva aplicación es tener que lidiar con instancias que se disparó de nuevo si nadie ha golpeado a sus servidores en 15 minutos. Dado que la aplicación es nueva, o sólo tiene pocos usuarios, habrá períodos de gran latencia para algunos usuarios que no tienen idea de que las instancias están siendo "giradas"

Por lo que yo veo que tiene estas opciones basadas en los documentos :

Utilice manual-scaling y establezca el número de instancias en 1 .

Cuando se utiliza manual-scaling , cualquier número de instancias que se establezca a es lo que usted tendrá – ni más, ni menos. Esto es claramente ineficiente ya que puede estar pagando por instancias no utilizadas y las instancias no se agregan o eliminan automáticamente a medida que aumenta / disminuye el tráfico

Utilice basic-scaling y establezca el idle-timeout para algo como 24 horas o 48 horas.

Esto mantendrá su instancia funcionando siempre y cuando alguien consulte su API al menos una vez dentro de ese período de tiempo.

Utilice automatic-scaling con min-idle-instances y solicitudes de calentamiento habilitadas.

Esto no funciona como se pretende. De acuerdo con estos documentos :

Si su aplicación no está proporcionando tráfico, la primera solicitud a la aplicación siempre será una solicitud de carga, no una solicitud de calentamiento.

Esto no soluciona nuestro problema porque si se ejecutan cero instancias, entonces no hay nada para calentarse en primer lugar. Por lo tanto, todavía obtiene latencia en la primera solicitud.


El efecto deseado que me gustaría tener es tener siempre una instancia en ejecución y luego escalar desde allí si el tráfico se incrementa (y, por supuesto, la escala hacia abajo, pero nunca ir por debajo de una instancia). Sería como la escala automática, pero con 1 instancia siempre en ejecución.

¿Es esto posible en GAE? ¿O me estoy perdiendo algo?

Por ahora, mi solución temporal es establecer mi aplicación a manual-scaling con 1 instancia por lo menos mi aplicación es utilizable para los nuevos usuarios.

Una solución que he intentado y funciona es usar la escala automática y emitir un trabajo cron que sólo ejecuta cualquier método de api estático público (puede tomar cero params y devolver null) en un servlet cada 5 minutos o menos.

Consulta aquí para saber cómo configurarlo: https://cloud.google.com/appengine/docs/java/config/cron#creating_a_cron_job

Esto le da el beneficio de 28 horas de instancia libre vs usar escalas manuales de 8 horas 🙂 woot woot

  • Cómo enviar datos de imagen al servidor desde Android
  • La anotación sólo está disponible para java 1.5 y superior cuando se genera Google App Engine Backend (JDK 1.8, nuevo ADT instalado)
  • No se puede acceder a la aplicación de App Engine que se ejecuta en Android Studio mediante Android Device Application in LAN
  • El mejor lugar para almacenar las credenciales de acceso de usuario en Android
  • No se puede importar la clase de biblioteca de cliente de nodos de nube de google en el proyecto de Android
  • Cambio de token de autenticación de Facebook
  • @Nullable @Named en GAE / Android Muestra
  • Copia de seguridad de datos de Google Cloud Almacén de datos Vs google drive Vs otro servicio de almacenamiento
  • Configuración de Proguard al utilizar la plantilla Google Cloud Endpoints de Android Studio
  • Protección de los puntos finales de Google App Engine
  • La autenticación de Android en las cuentas de Google se transmite a Google App Engine
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.