2012-03-06 11 views
6

He encontrado este problema por segunda vez y me pregunto si hay alguna solución para esto. Estoy ejecutando una aplicación en Google App Engine que depende de la comunicación frecuente con un sitio web a través del HTTP JSON RPC. Parece que GAE tiene una tendencia a mostrar al azar un mensaje como este en los registros:GAE Go - "Esta solicitud provocó que se iniciara un nuevo proceso para su aplicación ..."

"Esta petición provocó un nuevo proceso que se inició para su aplicación, y causó así su código de aplicación para ser cargado para el primera vez. Esta solicitud puede llevar más tiempo y utilizar más CPU que una solicitud típica para su aplicación. "

Y reinicie todas las variables almacenadas en la memoria RAM sin previo aviso. El mismo proceso ocurre una y otra vez, sin importar cuántas veces establezca las variables nuevamente o suba un código nuevo a GAE, aunque aumentar el número de versión de la aplicación parece resolver el problema.

¿Cómo puedo obtener más información sobre este comportamiento, cómo evitarlo y evitar la pérdida de datos de mis aplicaciones Golang en Google App Engine?

EDIT:

Las variables almacenadas en la memoria RAM son pequeñas clases de cadenas, bytes, Bools y punteros. Nada demasiado complicado o grande.

Google App Engine parece "iniciar un nuevo proceso" en cuestión de segundos de uso más intenso, que no debería ser el tiempo suficiente para que la aplicación se cierre por no ser utilizada. El intervalo de tiempo entre la aplicación que se carga a GAE, la configuración de la variable y la creación de un nuevo proceso es de menos de un minuto.

+0

¿Puedes aclarar sobre la naturaleza de las variables almacenadas en la RAM? ¿Podrías almacenar esos datos en caché en Memcache? – kristianp

Respuesta

3

Usted puede leer acerca de las instancias GAE en su documentación aquí, echa un vistazo a la sección de rendimiento:

http://code.google.com/appengine/kb/java.html

En el caso de disponer de datos pequeños disponibles, si es estática, puede cargar en la memoria de inicio de una nueva instancia. Si se trata de datos dinámicos, debe guardarlos en la base de datos utilizando su API.

Mi recomendación para mantener una instancia de GAE vivo, o bien pagar por el servicio siempre activo o seguir mis recomendaciones para el uso de un cron aquí:

http://rwyland.blogspot.com/2012/02/keeping-google-app-engine-gae-instances.html

utilizo lo que llamo un "horario prime" de un trabajo cron de 3, 7, 11 minutos.

+0

El intervalo de tiempo entre la aplicación que se inicializa y un nuevo proceso que se está creando es inferior a 1 minuto, por lo que es probable que el problema sea diferente de la aplicación que se cierra debido a que no se utiliza en un tiempo. – ThePiachu

+2

Siempre encendido no ayuda si tiene un diseño defectuoso que espera poder guardar el estado en la memoria RAM entre las solicitudes. Todavía puede tener docenas de instancias ejecutándose al mismo tiempo que escala para manejar mucho tráfico y no compartirán el estado. – geoffspear

+0

@ThePiachu Inicie sesión en el sitio appengine y mire sus instancias y registro. Probablemente verás que después de unos 5-10 minutos de inactividad, tu instancia en ejecución se apaga. GAE es una plataforma escalable: si no la está utilizando, ¿por qué desperdiciar los recursos? – rwyland

12

¿Se da cuenta de que GAE es una solución de alojamiento en la nube que gestiona instancias automáticamente en función de la carga? Esta es su característica principal y la razón por la que las personas lo están usando.

Cuando la carga aumenta, GAE crea una nueva instancia, que, por supuesto, tiene todas las variables de RAM vacías.

La solución es no esperar que las variables estén disponibles o almacenarlas en almacenamiento permanente al final de la solicitud (sesión, memoria intermedia, almacén de datos) y cargarlas si no están presentes al comienzo de la solicitud.

2

Debería considerar usar Backends si desea instancias de larga ejecución con memoria residente.

+0

Backends está privado ahora. ¿Cualquier otra sugerencia? – Ajai

Cuestiones relacionadas