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 :
- Google Cloud Messaging para Android Library no se encuentra en el administrador de sdk
- Obtener de android a motor de aplicaciones de Google
- Con Android, ¿cómo establezco el plazo máximo para una solicitud de Cloud Endpoint?
- Error de GLS: INVALID_AUDIENCE en los puntos finales de la nube de google
- Deploy to App Engine problem - Debe iniciar sesión para realizar esta acción
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.
- Objectify OfyService NoClassDefFoundError para el punto final del motor de la aplicación
- El método de punto final de Google mantiene la devolución "nombre no debe estar vacío" excepción
- Enviar datos de imagen a la aplicación Android desde App Engine
- Error en el proyecto de Android de App Engine conectado
- Google Endpoints Android con Python Backend
- Convertir una cadena en número de coma flotante en java
- ¿Cómo enviar datos desde dispositivos móviles Android al almacén de datos de Google App Engine?
- Bloqueo de inicio de Eclipse, "SDK de Android: resolución de marcadores de error"
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
- "Tomar una foto y presentarla" en modo retrato en Samsung Galaxy S
- Android FusedLocationProviderApi: La intención de entrada no tiene LocationResult o LocationAvailability