跳转到主要内容

抽样SQL查询的百分比并将它们分组以便于查看

项目描述

作者:Colin Howe (@colinhowe)

许可协议:Apache 2.0

关于

Django Sampler 允许您抽样查询的百分比(SQL、Mongo等)并查看占用时间最多的查询。查询将根据它们在代码中的来源进行分组。

安装

安装

pip install git+git://github.com/colinhowe/djangosampler.git#djangosampler

或下载并运行

python setup.py install
配置
  • djangosampler 添加到您的 INSTALLED_APPS

  • 添加表(如果您使用South,请使用 manage.py syncdbmanage.py migrate

  • 添加视图

    urlpatterns += patterns('',
        (r'^sampler/', include('djangosampler.urls')),
    )
  • DJANGO_SAMPLER_FREQ 设置为介于 0 和 1 之间的值

  • DJANGO_SAMPLER_PLUGINS 设置为插件列表。仅抽样SQL的合理默认值是

    DJANGO_SAMPLER_PLUGINS = (
        'djangosampler.plugins.sql.Sql',
        # Plugins are applied in the same order as this list
    )

    有多个插件可用,阅读它们以充分利用此工具是很有价值的。

  • 如果您使用基于成本的抽样,则将 DJANGO_SAMPLER_BASE_TIME 设置为正常查询预期持续时间的秒数。默认情况下,此值为 5ms。

查看结果

让采样器运行一段时间后,您将能够查看在您配置的URL上按来源分组的查询。

配置

DJANGO_SAMPLER_PLUGINS

Django Sampler 具有插件架构,允许您控制要收集的数据量。

在您的 settings.py 中添加以下内容

DJANGO_SAMPLER_PLUGINS = (
    'djangosampler.plugins.sql.Sql',
    # Plugins are applied in the same order as this list
)

上面的示例将添加SQL插件。

可用的插件及其设置在下面的插件部分中描述。

DJANGO_SAMPLER_FREQ

DJANGO_SAMPLER_FREQ 配置将被记录的查询百分比。它应该在 0.0 和 1.0 之间。

如果没有设置此值,则不会安装任何插件,您的代码将正常运行。

DJANGO_SAMPLER_USE_COST

DJANGO_SAMPLER_USE_COST 将启用基于成本的采样。这会导致运行时间较长的查询比短查询采样更频繁。

查询被采样的几率将乘以查询的总时间。如果查询耗时 2 秒,那么它被采样的可能性是耗时 1 秒查询的两倍。

查询的成本将根据以下方式进行调整

cost = max(1.0, time * DJANGO_SAMPLER_FREQ) / DJANGO_SAMPLER_FREQ

插件

以下列出了可用的插件。您可以编写自己的插件,这将在“编写您自己的插件”部分中描述。

Django SQL

插件类: djangosampler.plugins.sql.Sql

SQL 采样插件将对您的应用程序中发生的 SQL 查询的百分比进行采样。样本将按查询分组,并将记录堆栈跟踪以找到查询的来源。

Django 请求

插件类: djangosampler.plugins.request.Request

请求插件将安装一个 Middleware,它会采样请求所需的时间。

采样任何代码

这并不是严格意义上的插件。这是一个上下文管理器,允许您标记代码块并采样代码块运行所需的时间。例如。

from djangosampler.sampler import sampling

with sampling('my_code', 'some_fn'):
    do_something_slow()

Celery

插件类: djangosampler.plugins.celery_task.Celery

Celery 插件使用 Celery 的信号来采样任务执行所需的时间。

MongoDB

插件类: djangosampler.plugins.mongo.Mongo

MongoDB 插件将对您的应用程序中发生的 MongoDB 命令(查询、插入等)的百分比进行采样。样本将按命令分组,并将记录堆栈跟踪以找到查询的来源。

编写您自己的插件

待办事项。目前,请查看插件文件夹并复制 :)

反馈

反馈始终欢迎!GitHub 或 Twitter (@colinhowe) 是联系我的最佳方式。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

djangosampler-0.10.0.tar.gz (13.1 kB 查看哈希)

上传时间

构建分发

djangosampler-0.10.0.linux-x86_64.tar.gz (26.0 kB 查看哈希)

上传时间

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页