python - template - Uso de memoria Django subiendo con cada solicitud
linebreaksbr django (8)
Trasladé mi primer proyecto Django de DjangoEurope a Webfaction, y eso comenzó un problema que parecía una pérdida de memoria. Con cada solicitud de memoria, el uso del proceso del servidor aumenta aproximadamente 500 kb. Nunca baja Esto continúa hasta que Webfaction lo mata por usar demasiada memoria.
Puedo ver claramente esto cuando actualizo la interfaz de administración de Django en mi navegador (aunque esto ocurre con cada página, no solo con la interfaz de administración, sino que la interfaz de administración sería un buen caso de prueba, porque no hay mi código directamente allí) . Con cada recarga del navegador, el uso de la memoria aumenta un par de cientos de kilobytes.
Pruebo la memoria usando un comando sugerido por Webfaction:
ps -u publica -o rss,etime,pid,command
Más sobre mi configuración:
- Django 1.1 (estable)
- Configuración predeterminada de Django de Webfaction usando Apache y mod_wsgi
-
DEBUG
configurado enFalse
- MySQLdb 1.2.2 de Webfaction, pero después de escucharlo tuve algunos problemas, probé la versión 1.2.3c. No ayudo
Edición: creé un proyecto vacío de Django: la configuración predeterminada de Django más django.contrib.admin
y la nueva base de datos vacía (lo intenté con mysql y postgresql). Comencé a recargar el administrador de Django en mi navegador y observé el uso de la memoria. Al principio vi que ocurría el problema: el uso de la memoria crecía después de cada recarga. Pero luego se estabilizó y dejó de crecer. Eso es coherente con el comportamiento de mi proyecto original en Django Europe. Desafortunadamente, en Webfaction nunca parece estabilizarse (o al menos no dentro de los límites de memoria disponibles para mi cuenta). ¿Algún consejo?
¿Los módulos mod_python y mod_wsgi están cargados en apache?
Sé que a mod_wsgi no le gusta tener mod_python en su construcción. Compruebe que no está cargado.
Me temo que no tengo respuestas definitivas. Los consejos de Graham Dumpleton fueron muy útiles, pero desafortunadamente no hizo una respuesta (solo comentarios), por lo que no hay forma de aceptar su respuesta.
Aunque todavía no he resuelto completamente el problema, aquí hay algunos consejos básicos para otras personas que tienen problemas similares:
- Lea la documentación de Webfaction:
- Asegúrese de que la configuración de
DEBUG
esté configurada enFalse
- No uses
mod_python
, usamod_wsgi
- Asegúrate de usar la versión más reciente de
mod_wsgi
(Webfaction tiende a instalar versiones anteriores) - No uses Django para servir contenido estático
- Intente ejecutar
mod_wsgi
en modo daemon (Webfaction lo instala en modo integrado de forma predeterminada) [gracias a Graham Dumpleton por la sugerencia] - Si ejecuta en modo incrustado, puede especificar la opción "inactivity-timeout = [seconds]". Reiniciará el proceso después de [segundos] de inactividad, lo que ayudará a aumentar el uso de la memoria. Lea esta publicación del foro para obtener instrucciones detalladas .
- Esta secuencia de comandos lo ayudará a controlar su uso de la memoria de manera más sencilla y precisa [gracias a ClaudioA por la sugerencia]
También he tenido problemas con la memoria en Webfaction, pero realmente no aparecieron hasta que agregué mi quinta aplicación. Intenté algunos ajustes en mis configuraciones de apache, pero lo que finalmente me funcionó fue cambiar a mod_wsgi.
Tengo los mismos problemas con webfaction.
El método que utilizo, y qué webfaction me dijo que debería seguir utilizando, es ejecutar un trabajo cron que verifica la memoria cada 5 minutos aproximadamente y reinicia cualquier aplicación que esté fuera de control.
De las 4 aplicaciones de python en webfaction, tengo un promedio de 4 reinicios por día.
Tuvimos un problema similar en Webfaction, pero resultó que no fue por eso en absoluto. Hay un error en Django sobre el alto uso de memoria al usar el mapa del sitio con muchos elementos: http://code.djangoproject.com/ticket/11572
Cuando eliminamos el mapa del sitio, ya no se dispara a más de 90 Mb. Solo pensé que debería mencionarlo, ya que tomó mucho tiempo para usarlo para solucionar problemas.
Verifique si el backend del caché de memoria en proceso está habilitado, si es así, ese podría ser el problema (nuevas entradas de caché en cada solicitud).
Yo sugeriría no adivinar.
Eche un vistazo a http://code.google.com/p/django-dowser/ , es una aplicación muy útil para detectar fugas de memoria y determinar qué partes de su código son responsables del consumo de memoria.
¿Revisaste estos consejos? -> http://blog.webfaction.com/tips-to-keep-your-django-mod-python-memory-usage-down
Hemos implementado una aplicación en WebFaction y no estamos teniendo esos problemas.
¿Estás sirviendo tus archivos estáticos como ellos recomiendan?
Por cierto, esto también podría ser útil: http://fightingrabbits.com/archives/198