djangosampler es una aplicación Django que le permite muestrear un porcentaje de las consultas (SQL, Mongo, etc) y ver los que están ocupando la mayor parte del tiempo. Las consultas se agrupan por el lugar donde se originó a partir de su código.
Instalación
Instalar:
python setup.py install
Configurar:
- Añadir djangosampler a sus INSTALLED_APPS
- Añadir las tablas (syncdb manage.py o manage.py migrar si utiliza Sur)
- Añadir los puntos de vista:
& Nbsp; urlpatterns + = patterns ('',
& Nbsp; (r '^ sampler /', include ('djangosampler.urls')),
& Nbsp;)
- Set DJANGO_SAMPLER_FREQ a un valor distinto de 0
- Establecer DJANGO_SAMPLER_PLUGINS a una lista de plugins. Por solo muestreo SQL un defecto sensible es:
& Nbsp; DJANGO_SAMPLER_PLUGINS = (
& Nbsp; "djangosampler.plugins.sql.Sql ',
& Nbsp; # Plugins se aplican en el mismo orden en esta lista
& Nbsp;)
- Hay varios plugins disponibles y vale la pena leer a través de ellos para conseguir la mayoría del uso de esta herramienta.
- Si está utilizando el muestreo basado en el costo a continuación, establecer DJANGO_SAMPLER_BASE_TIME a la duración prevista de una consulta normal en el segundo. Por defecto está ajustado a 5 ms.
Visualización de los resultados
Después de dejar correr el muestreador por un tiempo usted será capaz de ver consultas (agrupadas por su origen) en la dirección URL que ha configurado.
Configuración
DJANGO_SAMPLER_PLUGINS
Django Sampler tiene una arquitectura plug-in que le permite controlar la cantidad de datos que desea ser recogido.
En su settings.py añadir lo siguiente:
DJANGO_SAMPLER_PLUGINS = (
& Nbsp; "djangosampler.plugins.sql.Sql ',
& Nbsp; # Plugins se aplican en el mismo orden en esta lista
)
El ejemplo anterior se sumará el plugin SQL.
Plugins disponibles y sus ajustes se describen en la sección Plugins de abajo.
DJANGO_SAMPLER_FREQ
DJANGO_SAMPLER_FREQ configura el porcentaje de consultas que se pueden grabar. Debe estar entre 0,0 y 1,0.
Si esto no se establece a continuación, no se instalará ningún plugins y su código se ejecutará de forma normal.
DJANGO_SAMPLER_USE_COST
DJANGO_SAMPLER_USE_COST permitirá muestreo basado en los costos. Esto hace que las consultas que se ejecutan durante un largo tiempo para ser muestreada con más frecuencia que las preguntas cortas.
La probabilidad de que una consulta se muestrea se multiplica por el tiempo total de la consulta tarda. Si una consulta dura 2 segundos y luego será el doble de probabilidades de ser muestreado como una consulta que tarda 1 segundo.
El costo de una consulta se ajusta para dar cuenta de la siguiente manera:
costo = max (1,0, el tiempo * DJANGO_SAMPLER_FREQ) / DJANGO_SAMPLER_FREQ
Plugins
Una lista de plugins disponibles sigue. Usted puede escribir su propio plugin y esto se describe en la sección "Escribiendo sus propios plugins.
Django SQL
Clase Plugin: djangosampler.plugins.sql.Sql
El plugin sampler SQL se muestra un porcentaje de las consultas SQL que se producen en su aplicación. Las muestras serán agrupados por consulta y pila rastros se registraron para encontrar donde las consultas sean originarios.
Las solicitudes de Django
Clase Plugin: djangosampler.plugins.request.Request
La solicitud de complemento instala un Middleware que muestra el tiempo empleado por las solicitudes.
Muestra cualquier código
Esto no es estrictamente un plugin. Se trata de un gestor de contexto que le permitirá marcar bloques de código y probar cuánto tiempo los bloques toman para funcionar. Por ejemplo .:
a partir del muestreo de importación djangosampler.sampler
con toma de muestras ('mi_código', 'some_fn'):
& Nbsp; do_something_slow ()
Apio
Clase Plugin: djangosampler.plugins.celery_task.Celery
El plugin Apio utiliza señales de apio para probar el tiempo necesario para ejecutar tareas.
MongoDB
Clase Plugin: djangosampler.plugins.mongo.Mongo
El plugin MongoDB se muestra un porcentaje de Mongo Comandos (consultas, inserciones, etc.) que se producen en su aplicación. Las muestras se agruparán por orden y trazas de la pila se registrarán para encontrar donde las consultas sean originarios
Requisitos :.
- Python
- Django
Comentarios que no se encuentran