抽样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 syncdb 或 manage.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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 59988208af850b915ff01071e2e81945e77d9ff3aaab681aa092daff9a328729 |
|
MD5 | f18b3b821f5b1690f425e071373425e1 |
|
BLAKE2b-256 | b5ff672cef9a570977d49fb8a170970cf7905028b61a2806788d3d9454746ccb |