Sử dụng MiniProfiler để theo dõi Profile của Rails App
Giới thiệu
MiniProfiler là một công cụ đơn giản để theo dõi thời gian server xử lý và render các thành phần html, query database (server side), thời gian trình duyệt load trang, xử lý DOM, hiển thị nội dung (client side). Rất hữu ích cho việc lập profile cho rails app, kiểm tra và cải thiện performance của app (có thể dùng cho các ứng dụng ruby và .NET , tham khảo tại đây)
Cài đặt:
Với rails app, đặt vào trong gemfile, sau đó chạy lệnh cài đặt bunlde
1 |
gem 'rack-mini-profiler' |
Chú ý: Trong gem file, đặt dòng cài đặt rack-mini-profiler bên dưới dòng cài đặt pg
hoặc mysql
,
1 |
rack_mini_profiler |
sẽ tự xác định và cài đặt phù hợp với kiểu database đang sử dụng ở Rails App. Nếu đặt
1 |
rack_mini_profiler |
lên trên, MiniProfiler sẽ không theo dõi được các câu lệnh SQL.
Sử dụng rack-mini-profiler trong rails app
rack-mini-profiler có thể sử dụng được trên cả môi trường development và production. Để kích hoạt tính năng này trên production, chỉ việc chạy Rack::MiniProfiler.authorize_request đối với những request có quyền xem profile của app
1 2 3 4 5 6 |
# A hook in your ApplicationController def authorize if current_user.is_admin? Rack::MiniProfiler.authorize_request end end |
Rack-mini-profiler hỗ trợ một số params sau
# pp=env : Hiển thị thông tin về môi trường đang chạy
# pp=skip : Bỏ qua MiniProfiler
# pp=no-backtrace : Không theo dõi các câu lệnh SQL (dùng pp=normal-backtrace để bật lại tính năng này)
# pp=full-backtrace : Theo dõi một cách chi tiết về các câu lệnh SQL được thực thi (sử dụng pp=normal-backtrace để trở về bình thường)
# pp=disable : vô hiệu hóa Miniprofiler
# pp=enable : bật lại MiniProfiler ( nếu trước đó đã vô hiệu hóa)
Database
Hiện tại rack-mini-profiler hỗ trợ các loại Database sau: Mysql2, Postgres, and Mongoid3
Tùy chỉnh cài đặt
Với rack-mini-profiler, có thể tùy chỉnh một số cài đặt sau
Hiển thị profile của trang ở bên góc phải (thay vì góc trái như mặc định)
1 |
Rack::MiniProfiler.config.position = 'right' |
Để mặc định không hiển thị profile khi load trang ( Dùng phím tắt Alt + P để hiện bảng profile lên )
1 |
Rack::MiniProfiler.config.start_hidden = true |
Không hiển thị những câu lệnh SQL có thời gian thực thi nhỏ hơn 5 mili giây
1 |
Rack::MiniProfiler.config.backtrace_threshold_ms = 5 |
Không theo dõi query đến database nữa
1 |
Rack::MiniProfiler.config.skip_schema_queries = true |
Có thể xem thêm tại đây
Đọc và nhìn vào cái hình ảnh có vẻ đây là 1 gem hữu ích trong quá trình phát triển đối với dev để phát hiện bottle neck đối với mỗi render, hoặc truy vấn csdl. Đối với môi trường production, khi cùng lúc có tới hàng chục nghìn users online, hàng trăm nghìn query tới server mỗi phút, thậm chí nhiều hơn thế rất nhiều, thì cần có những công cụ quản lý hữu hiệu hơn. Anw, tình cờ gặp bài post này cũng thấy hay. thanks thớt Huy 🙂