Hay dos capas para esto. Tenemos la mayor cantidad de # 1 en el lugar para nuestras pruebas. Estamos a punto de comenzar en el n. ° 2.
Django in isolation. Las pruebas ordinarias de la unidad Django funcionan bien aquí. Cree algunas pruebas que recorran unos pocos (menos de 6) casos de uso "típicos". Obtener esto, publicar eso, etc. Recolectar datos de tiempo. Este no es un rendimiento web real, pero es un escenario de prueba fácil de usar que puede usar para sintonizar.
Toda la pila de la web. En este caso, necesita un servidor regular que ejecute Squid, Apache, Django, MySQL, lo que sea. Necesita una segunda computadora para que un cliente haga ejercicio en su sitio web a través de urllib2, haciendo unos pocos (menos de 6) casos de uso "típicos". Obtener esto, publicar eso, etc. Recolectar datos de tiempo. Este todavía no es un rendimiento web "real", porque no es a través de Internet, pero es lo más cercano que se obtendrá sin una configuración realmente elaborada.
Tenga en cuenta que el indicador # (extremo a extremo) 2 incluye una gran cantidad de almacenamiento en caché para el rendimiento. Si los scripts de su cliente están haciendo un trabajo similar, el almacenamiento en caché será realmente beneficioso. si las secuencias de comandos del cliente hacen cosas únicas cada vez, el almacenamiento en la memoria caché será menos beneficioso.
Lo más difícil es determinar cuál es la carga de trabajo "típica". Esta no es una prueba funcional, por lo que la carga de trabajo no tiene que incluir todo. Además, mientras más sesiones concurrentes esté ejecutando su cliente, más lento se vuelve. No se esfuerce tratando de optimizar su servidor cuando su cliente de prueba es la parte más lenta del proceso.
Editar
Si "línea por línea" significa "perfil", bueno, ya que conseguir un perfilador de Python en ejecución.
https://docs.python.org/library/profile.html
Tenga en cuenta que hay un montón de almacenamiento en caché en la capa ORM de Django. Así que ejecutar una función de vista una media docena de veces para obtener un conjunto significativo de mediciones no es sensato. Debe ejecutar un conjunto de operaciones "típicas" y luego encontrar puntos calientes en el perfil.
Generalmente, su aplicación es fácil de optimizar, no debería estar haciendo mucho. Las funciones de visualización deben ser cortas y no tener ningún procesamiento para hablar. Sus funciones de método de formulario y modelo, de manera similar, deberían ser muy cortas.
Defina "datos de rendimiento línea por línea" –
lo siento, solo me refiero a la cantidad de tiempo que se necesita para ejecutar cada línea de código, así como el tiempo por función, llamada a base de datos, etc. – Jiaaro