2012-02-17 8 views
22

Un usuario de mi aplicación intentó enviar un archivo como un archivo adjunto de correo electrónico utilizando mi aplicación. Sin embargo, esto eleva la siguiente excepción que estoy teniendo problemas para descifrar¿Cuál es el "límite de memoria privada suave" en GAE?

Exceeded soft private memory limit with 192.023 MB after servicing 
2762 requests total 

While handling this request, the process that handled this request was 
found to be using too much memory and was terminated. This is likely to 
cause a new process to be used for the next request to your application. 

If you see this message frequently, you may have a memory leak in 
your application. 

¿Cuál es el "límite de memoria privada suave" y lo que era probable que llevar a cabo esta excepción?

+1

Parece que GAE aplica un límite a la cantidad de memoria que puede usar el proceso que ejecuta la aplicación. Su aplicación excedió este límite (¿tal vez al tratar de mantener un archivo adjunto muy grande en un búfer?), Por lo que el sistema tomó medidas contra eso. La única parte que encuentro confusa es que el mensaje dice que el proceso fue "terminado", entonces ¿en qué hilo de ejecución se planteó esta excepción? –

+1

@SteveJessop AFAIK, se permitió que el proceso finalizara su última solicitud antes de ser cancelado. –

Respuesta

21

El "límite de memoria privada suave" es el límite de memoria en el que App Engine impedirá que una instancia reciba más solicitudes, esperará cualquier solicitud pendiente y finalizará la instancia. Piense en ello como un apagado elegante cuando usa demasiada memoria.

Tocar el límite suave de vez en cuando está bien, ya que todas sus solicitudes terminan como deberían. Sin embargo, cada vez que esto sucede, su próxima solicitud puede iniciar una nueva instancia que puede tener un impacto de latencia.

20

Supongo que está utilizando la instancia de interfaz o back-end de clase más baja. (Clase F1 o B1) Ambos tienen una cuota de memoria de 128 MB, por lo que su aplicación probablemente superó este límite de cuota. Sin embargo, parece que esta cuota no se aplica estrictamente y Google tiene cierta indulgencia con esto (por lo tanto, el término soft limit), tuve varias instancias de la aplicación F1 consumiendo ~ 200MB de memoria durante minutos antes de que App Engine lo interrumpa.

Intente aumentar su clase de instancia a la siguiente clase de nivel superior (F2 o B2) que tenga una cuota de memoria de 256 MB y vea si el error vuelve a ocurrir. Además, investigue si el error es reproducible cada vez que envía un correo electrónico con archivos adjuntos. Porque es posible que lo que está viendo sea el síntoma pero no la causa, y la parte de la aplicación que consume mucha memoria se encuentra en otro lugar.

+2

Estoy usando la instancia de clase más baja: es una buena opción para aumentar el límite de memoria. Intentaré adjuntar algo grande con una instancia superior seleccionada. – user714852

+0

Además, no olvide actualizar los back-end. Me parece que AppEngine ejecuta B1 de forma predeterminada. Pruebe: backends appcfg.py. actualizaciones (consulte también: https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/7U5sVDpjcmk) –

+1

Para mí, parece que se está produciendo una pérdida de memoria y la instancia en GAE no está liberando memoria correctamente. – Jonny

Cuestiones relacionadas