2012-06-05 8 views
5

Uso Google Ap Engine con estado de facturación habilitado.
Instancias de inactividad se establecen en: (1 - 1)Por qué GAE lanzó una segunda instancia con Max Idle Instances establecido en 1

enter image description here

Y con sólo 2 clientes en mi servicio, en ocasiones vi a una segunda instancia. El problema es que son 15s para iniciar la nueva instancia (primavera y verano ...).

enter image description here

80Mb de memoria es hight de un caso?
Registro para la nueva instancia:/_ah/warmup 200 14580ms 0kb
La segunda instancia desaparece después de unos segundos.

¿Por qué con 3-4 solicitudes, GAE ejecuta una segunda instancia? ¡El primero no hace nada (casi)!

Traté de modificar "latencia pendiente" sin éxito.

¿Una solución? :)

Thx

+0

Creo que este comportamiento es bastante normal. Cada vez que las solicitudes entran, GAE inicia instancias inactivas para poder atender las próximas solicitudes de manera eficiente. Esto es solo para asegurar que todos los clientes obtengan un buen rendimiento. Creo que podemos comparar este comportamiento con la forma en que funciona la agrupación de conexiones en las bases de datos. También vea [enlace] (https://developers.google.com/appengine/docs/adminconsole/performancesettings#Setting_the_Number_of_Idle_Instances) –

+0

Estoy de acuerdo con usted Jan; pero ¿por qué en la dinámica tiene "1" Solicitudes? Es el mismo comportamiento que tengo pero no tiene sentido para mí porque en este momento ya no es un ciclo de calentamiento, sino un ciclo real de la solicitud de manejo. Y la solicitud manejada tiene una gran latencia. –

Respuesta

3

Ha pedido exactamente una instancia inactiva. Al atender una solicitud, una instancia no está inactiva. Por lo tanto, App Engine genera una nueva instancia para mantener el número solicitado de instancias inactivas.

+0

¡Interesante! Pero si el nuevo es una instancia inactiva, ¿por qué se necesita una solicitud? (por lo tanto, tiene 15 segundos de tiempo de respuesta). El problema es que no tenía mucho tráfico. Entonces, si voy a establecer la instancia mínima inactiva en Automático, me temo que todos mis clientes tendrán una latencia de 15 segundos para su primera solicitud :( – Samuel

+1

La solicitud es la solicitud de preparación, que es específicamente para evitar que los usuarios tengan que soportar la Tiempo de carga. –

1

Si la instancia residente se considera "demasiado ocupado" para gestionar una petición, App Engine empezar otra. Incluso con muy poco tráfico, si la aplicación está manejando suficientes solicitudes simultáneamente, AE puede decidir que necesita otra instancia para proporcionar un servicio de calidad. Tiene razón en que aumentar la latencia pendiente reducirá las posibilidades de que se inicie otra instancia, pero no puede prohibir completamente las instancias dinámicas.

Además, ¿tiene habilitado el multihilo? De lo contrario, la instancia residente estará ocupada incluso si se trata de una sola solicitud. Si su código es seguro para la ejecución de subprocesos, puede habilitar el subprocesamiento múltiple y manejar más solicitudes simultáneas al mismo tiempo que la instancia.

Con muy poco tráfico y un número muy pequeño de instancias, App Engine no tiene mucha información para decidir si necesita una nueva instancia. Verá una mejor utilización y menos instancias falsas con más tráfico.

+0

Thx Dan. Sí habilité multihilo. Es una locura que funcione mejor con más tráfico :) ¿Cómo GAE determina que una instancia está "demasiado ocupada"? Usar una instancia F2 es una solución? – Samuel

+0

Solo me siento calificado para dar una respuesta aproximada aquí. Hay cosas interesantes que AE podría estar haciendo para adivinar si una solicitud determinada sería manejada adecuadamente por una instancia bajo una determinada cantidad de carga. Pero no estoy seguro de qué es lo que realmente hace AE, y me gustaría que el equipo de AE ​​tuviera la libertad de ajustarlo en gran medida y no comprometerse con una sola estrategia. –

+1

Lo principal a tener en cuenta es que con instancias dinámicas, AE se reserva el derecho de iniciar nuevas instancias. Si realmente desea mantener todo en un solo servidor, podría utilizar un backend direccionable, a expensas de la administración de carga dinámica. Pero supongo que en realidad estás preguntando sobre la utilización de instancias: ¿la segunda instancia implica que la primera instancia está al máximo o mal utilizada? La respuesta es que, en un momento dado, podría haber sido así, pero eso no significa que su aplicación tenga carga continua más grande de lo que normalmente puede manejar una instancia. –

Cuestiones relacionadas