djangosampler là một ứng dụng Django cho phép bạn lấy mẫu một tỷ lệ phần trăm của các truy vấn của bạn (SQL, Mongo, vv) và xem những người mà chiếm nhiều thời gian nhất. Các truy vấn được nhóm lại với nhau bởi nguồn gốc của chúng trong mã của bạn.
Cài đặt
Cài đặt:
python setup.py cài đặt
Cấu hình:
- Thêm djangosampler để INSTALLED_APPS của bạn
- Thêm các bảng (manage.py syncdb hoặc manage.py di chuyển nếu bạn sử dụng Nam)
- Thêm các quan điểm:
& Nbsp; urlpatterns + = mẫu ('',
& Nbsp; (r '^ sampler /', bao gồm ('djangosampler.urls')),
& Nbsp;)
- Set DJANGO_SAMPLER_FREQ đến một giá trị khác 0
- Set DJANGO_SAMPLER_PLUGINS vào một danh sách các plugin. Đối với chỉ lấy mẫu SQL mặc định hợp lý là:
& Nbsp; DJANGO_SAMPLER_PLUGINS = (
& Nbsp; 'djangosampler.plugins.sql.Sql',
& Nbsp; # Plugins được áp dụng theo thứ tự như danh sách này
& Nbsp;)
- Có một số plugin có sẵn và nó là đáng giá đọc qua chúng để có được hầu hết các sử dụng trong các công cụ này.
- Nếu bạn đang sử dụng dựa trên chi phí lấy mẫu sau đó thiết lập DJANGO_SAMPLER_BASE_TIME với thời gian dự kiến của một truy vấn bình thường chỉ trong vài giây. Theo mặc định này được thiết lập để ứng 5ms.
Xem Kết quả
Sau khi để chạy sampler một lúc, bạn sẽ có thể xem các truy vấn (nhóm theo nguồn gốc của họ) tại địa chỉ URL bạn đã cấu hình.
Cấu hình
DJANGO_SAMPLER_PLUGINS
Django Sampler có một kiến trúc plugin cho phép bạn kiểm soát bao nhiêu dữ liệu bạn muốn được thu thập.
Trong settings.py của bạn thêm phần sau đây:
DJANGO_SAMPLER_PLUGINS = (
& Nbsp; 'djangosampler.plugins.sql.Sql',
& Nbsp; # Plugins được áp dụng theo thứ tự như danh sách này
)
Ví dụ trên sẽ bổ sung thêm các plugin SQL.
Plugins có sẵn và cài đặt đã được mô tả trong phần Plugins bên dưới.
DJANGO_SAMPLER_FREQ
DJANGO_SAMPLER_FREQ cấu hình các tỷ lệ phần trăm của các truy vấn sẽ được ghi lại. Nó nên được giữa 0.0 và 1.0.
Nếu điều này không được thiết lập sau đó không có plugin sẽ được cài đặt và mã của bạn sẽ chạy như bình thường.
DJANGO_SAMPLER_USE_COST
DJANGO_SAMPLER_USE_COST sẽ cho phép lấy mẫu dựa trên chi phí. Điều này gây ra các truy vấn mà chạy trong một thời gian dài để được lấy mẫu thường xuyên hơn so với các truy vấn ngắn.
Các cơ hội mà một truy vấn được lấy mẫu được nhân với tổng thời gian truy vấn mất. Nếu một truy vấn mất 2 giây sau đó nó sẽ được gấp đôi khả năng bị lấy mẫu như một truy vấn mà mất 1 giây.
Chi phí cho một truy vấn được điều chỉnh vào tài khoản cho điều này như sau:
chi phí = max (1,0, thời gian * DJANGO_SAMPLER_FREQ) / DJANGO_SAMPLER_FREQ
Plugins
Một danh sách các plugin có sẵn sau. Bạn có thể viết plugin của riêng bạn và điều này được mô tả trong phần "Viết Plugins riêng của bạn '.
Django SQL
Lớp Plugin: djangosampler.plugins.sql.Sql
Các plugin SQL sampler sẽ lấy mẫu một tỷ lệ phần trăm của các truy vấn SQL xảy ra trong ứng dụng của bạn. Các mẫu sẽ được nhóm theo truy vấn và đống dấu vết sẽ được ghi lại để tìm nơi mà các truy vấn được nguồn gốc.
Các yêu cầu Django
Plugin lớp: djangosampler.plugins.request.Request
Các yêu cầu cài đặt plugin của một Middleware rằng sẽ lấy mẫu thời gian thực hiện các yêu cầu.
Mẫu mã
Đây không phải là hoàn toàn là một plugin. Đây là một người quản lý bối cảnh đó sẽ cho phép bạn đánh dấu các khối mã và lấy mẫu bao lâu các khối để chạy. Ví dụ: .:
từ lấy mẫu nhập khẩu djangosampler.sampler
với lấy mẫu ('my_code', 'some_fn'):
& Nbsp; do_something_slow ()
Cần tây
Plugin lớp: djangosampler.plugins.celery_task.Celery
Các plugin cần tây sử dụng tín hiệu của cần tây để lấy mẫu thời gian thực hiện để thực thi nhiệm vụ.
MongoDB
Plugin lớp: djangosampler.plugins.mongo.Mongo
Các plugin MongoDB sẽ lấy mẫu một tỷ lệ phần trăm của Mongo lệnh (truy vấn, chèn, vv) xảy ra trong ứng dụng của bạn. Các mẫu sẽ được nhóm theo lệnh và ngăn xếp dấu vết sẽ được ghi lại để tìm nơi mà các truy vấn được nguồn gốc
Yêu cầu .
- Python
- Django
Bình luận không