Đo lường hiệu suất của Firebase Realtime Database bằng công cụ phân tích tài nguyên cơ sở dữ liệu được tích hợp vào Firebase CLI. Công cụ phân tích tài nguyên sẽ ghi lại tất cả hoạt động trong cơ sở dữ liệu của bạn trong một khoảng thời gian nhất định, sau đó tạo một báo cáo chi tiết. Hãy sử dụng báo cáo chi tiết để khắc phục sự cố về hiệu suất cơ sở dữ liệu, phát hiện các khu vực có vấn đề và giảm số lượng truy vấn chưa được lập chỉ mục.
Tạo hồ sơ
Trước khi bắt đầu phân tích tài nguyên Firebase Realtime Database, hãy đảm bảo rằng bạn đang sử dụng phiên bản mới nhất của Firebase CLI và rằng bạn đã khởi chạy CLI cho cơ sở dữ liệu và dự án mà bạn muốn phân tích tài nguyên. Xin lưu ý rằng bạn phải là người chỉnh sửa hoặc chủ sở hữu của dự án đó thì mới có thể phân tích tài nguyên.
Bắt đầu phân tích tài nguyên cơ sở dữ liệu bằng lệnh sau:
Công cụ phân tích tài nguyên sẽ hiển thị thông báo trạng thái khi ghi lại các thao tác từ cơ sở dữ liệu và tạo hồ sơ.firebase database:profile
Nhấn Enter để hoàn tất hồ sơ và hiển thị kết quả.
Diễn giải kết quả
Công cụ phân tích tài nguyên sẽ tổng hợp dữ liệu đã thu thập về các thao tác của cơ sở dữ liệu và hiển thị kết quả theo 3 danh mục chính: tốc độ, băng thông, và truy vấn chưa được lập chỉ mục.
Tốc độ
Báo cáo tốc độ đo lường thời gian phản hồi của máy chủ (tính bằng mili giây) cho từng loại thao tác. Tuy nhiên, tốc độ đo được trong Báo cáo tốc độ có thể không thực sự phản ánh tốc độ mà người dùng cuối trải nghiệm. Các yếu tố khác nhau, bao gồm cả điều kiện mạng, có thể làm tăng độ trễ ở phía máy khách.
Báo cáo tốc độ bao gồm các thuộc tính sau:
- Đường dẫn: Đường dẫn trong cơ sở dữ liệu nơi các thao tác xảy ra. Nếu có hơn 25 nút con, công cụ phân tích tài nguyên sẽ thu gọn các nút này thành một đường dẫn mẹ và thêm dấu
$wildcard. Bạn có thể thấy thư mục gốc của cơ sở dữ liệu trong báo cáo, được biểu thị bằng dấu gạch chéo lên/. - Số lượng: Số thao tác đã xảy ra tại đường dẫn đã cho.
- Tốc độ thực thi trung bình: Thời gian trung bình mà máy chủ cần để thực thi logic nghiệp vụ cần thiết để xử lý loại thao tác cụ thể tại đường dẫn đó. Khoảng thời gian được đo lường ở đây bắt đầu sau khoảng thời gian được đo lường bằng "Thời gian chờ trung bình" được mô tả bên dưới.
- Thời gian chờ trung bình: Thời gian trung bình mà các yêu cầu phải chờ trong hàng đợi trước khi được thực thi. Độ trễ này là phổ biến đối với tất cả các yêu cầu do máy khách khởi tạo. Tổng độ trễ yêu cầu phía máy chủ xấp xỉ bằng tổng thời gian chờ và tốc độ thực thi của yêu cầu đó.
- Quyền bị từ chối: Số thao tác tại đường dẫn đã cho bị Quy tắc cơ sở dữ liệu của Firebase chặn trên cơ sở dữ liệu của bạn.
| Báo cáo tốc độ theo loại thao tác | |
|---|---|
| Tốc độ thực thi thao tác đọc | Thời gian phản hồi của máy chủ đối với các yêu cầu của ứng dụng để đọc dữ liệu từ cơ sở dữ liệu. Thời gian thực thi thao tác đọc thường tỷ lệ thuận với lượng dữ liệu đang được đọc, nhưng ngay cả một số thao tác đọc nhỏ cũng có thể bị trì hoãn do quá trình tìm nạp trước bộ nhớ đệm. |
| Tốc độ thực thi thao tác ghi | Thời gian phản hồi của máy chủ đối với các yêu cầu của máy khách để ghi dữ liệu vào cơ sở dữ liệu. Thời gian thực thi thao tác ghi tỷ lệ thuận với lượng dữ liệu đang được ghi. |
| Tốc độ thực thi thao tác kết nối | Thời gian phản hồi của máy chủ đối với các yêu cầu thiết lập kết nối với máy khách cơ sở dữ liệu. Độ trễ đối với các yêu cầu kết nối chủ yếu là do việc ghi sổ sách phía máy chủ trong bộ nhớ liên quan đến việc quản lý kết nối. |
| Tốc độ thực thi thao tác phát | Thời gian mà máy chủ cần để phân phối dữ liệu cho các máy khách đang theo dõi đường dẫn đã cho để nhận thông tin cập nhật theo thời gian thực. Thuộc tính Số lượng trong Báo cáo tốc độ phát tổng hợp số lượng thao tác phát đã xảy ra, chứ không phải số lượng máy khách đã nhận được thông tin. Ví dụ: nếu 10 máy khách đang theo dõi tại một đường dẫn đã cho và máy chủ phát thông tin cập nhật cho cả 10 máy khách, thì số lượng thao tác phát chỉ phản ánh 1 thao tác phát, mặc dù 10 máy khách đã nhận được dữ liệu. Thuộc tính Quyền bị từ chối không có trong Báo cáo tốc độ phát. |
Dải thông
Báo cáo băng thông cung cấp thông tin chi tiết về lượng dữ liệu mà cơ sở dữ liệu của bạn tiêu thụ trong các thao tác đến và đi. Tuy nhiên, bạn không nên sử dụng Báo cáo băng thông để ước tính chi phí thanh toán vì báo cáo này không bao gồm băng thông được sử dụng cho các thao tác khác, chẳng hạn như phân tích tài nguyên cơ sở dữ liệu. Báo cáo băng thông ước tính sơ bộ kích thước tải trọng của dữ liệu mà các thao tác đọc, ghi và truyền tin tiêu thụ đến và đi từ cơ sở dữ liệu của bạn. Đây là một công cụ đo lường hiệu suất, chứ không phải công cụ dự báo chi phí thanh toán.
Báo cáo băng thông bao gồm các thuộc tính sau:
Đường dẫn: Đường dẫn trong cơ sở dữ liệu nơi các thao tác xảy ra. Nếu có hơn 25 nút con, công cụ phân tích tài nguyên sẽ thu gọn các nút này thành một đường dẫn mẹ.
Tổng số: Tổng số byte đi hoặc đến được sử dụng trong tất cả các thao tác tại đường dẫn đã cho.
Số lượng: Số thao tác đã xảy ra tại đường dẫn đã cho.
Trung bình: Số byte trung bình được tải xuống hoặc tải lên trong các thao tác tại đường dẫn đã cho (byte/ghi hoặc byte/đọc).
| Báo cáo băng thông | |
|---|---|
| Số byte đã tải xuống | Dữ liệu được tiêu thụ thông qua các thao tác đọc và phát được gửi đi thông qua SDK máy khách và API REST. |
| Số byte đã tải lên | Dữ liệu được tiêu thụ thông qua các yêu cầu ghi đến máy chủ cơ sở dữ liệu. Các thao tác xoá xuất hiện dưới dạng các thao tác ghi với 0 byte trong phần đến. |
Truy vấn chưa được lập chỉ mục
Các truy vấn chưa được lập chỉ mục có thể tốn kém vì máy khách tải xuống tất cả dữ liệu tại một vị trí rồi thực hiện truy vấn trên dữ liệu đó. Điều này sử dụng nhiều băng thông hơn mức cần thiết. Hãy giải quyết nhiều truy vấn chưa được lập chỉ mục nhất có thể để tối ưu hoá hiệu suất của cơ sở dữ liệu.
Báo cáo Truy vấn chưa được lập chỉ mục hiển thị các thuộc tính sau:
- Đường dẫn: Đường dẫn trong cơ sở dữ liệu nơi các truy vấn chưa được lập chỉ mục xảy ra.
- Chỉ mục: Quy tắc mà bạn nên thêm để giải quyết các truy vấn chưa được lập chỉ mục. Tìm hiểu thêm về việc lập chỉ mục trong Lập chỉ mục dữ liệu.
- Số lượng: Số truy vấn chưa được lập chỉ mục đã xảy ra tại đường dẫn đã cho.
Phân tích tài nguyên nâng cao
Để xem tất cả các thao tác mà cơ sở dữ liệu của bạn đang xử lý, hãy sử dụng cờ --raw khi bạn phân tích tài nguyên cơ sở dữ liệu, như sau:
firebase database:profile --raw
Đầu ra thô cũng bao gồm thông tin máy khách cho từng thao tác, chẳng hạn như chuỗi userAgent và địa chỉ IP. Tìm hiểu thêm về các thao tác khác nhau
được phân tích tài nguyên trong Firebase Realtime Database trong bài viết Firebase Realtime Database Các loại thao tác.
Công cụ phân tích tài nguyên: Không phải là công cụ thanh toán
Không sử dụng công cụ phân tích tài nguyên để ước tính chi phí băng thông. Công cụ phân tích tài nguyên nhằm mục đích cung cấp cho bạn bức tranh tổng thể về hiệu suất của cơ sở dữ liệu, giúp bạn theo dõi các thao tác và khắc phục sự cố, chứ không phải để ước tính chi phí thanh toán. Công cụ này không tính đến lưu lượng truy cập mạng, mà chỉ ghi lại số liệu ước tính về dữ liệu ứng dụng được gửi trong các phản hồi.
Sau đây là một số ví dụ phổ biến về lưu lượng truy cập mạng mà Firebase tính phí nhưng không có trong hồ sơ cơ sở dữ liệu của bạn:
- Chi phí giao thức: Cần có một số lưu lượng truy cập bổ sung giữa máy chủ và ứng dụng để thiết lập và duy trì một phiên. Tuỳ thuộc vào giao thức cơ bản, lưu lượng truy cập này có thể bao gồm: chi phí giao thức theo thời gian thực của Cơ sở dữ liệu theo thời gian thực của Firebase, chi phí WebSocket và chi phí tiêu đề HTTP. Mỗi khi thiết lập một kết nối, chi phí này, kết hợp với mọi chi phí mã hoá SSL, sẽ góp phần vào chi phí kết nối. Mặc dù thường thì đây không phải là lượng băng thông lớn, nhưng có thể đáng kể nếu tải trọng của bạn nhỏ hoặc bạn thực hiện các kết nối ngắn và thường xuyên.
- Chi phí mã hoá SSL: Có một chi phí liên quan đến chi phí mã hoá SSL cần thiết cho các kết nối an toàn. Trung bình, chi phí này là khoảng 3, 5 KB cho lần bắt tay ban đầu và khoảng 40 B cho tiêu đề bản ghi TLS trên mỗi tin nhắn đi. Đối với hầu hết ứng dụng, đây là một tỷ lệ nhỏ trong hoá đơn của bạn. Tuy nhiên, tỷ lệ này có thể trở nên lớn nếu trường hợp cụ thể của bạn yêu cầu nhiều lần bắt tay SSL. Ví dụ: các thiết bị không hỗ trợ vé phiên TLS có thể yêu cầu nhiều lần bắt tay kết nối SSL.
Đọc thêm về cách tìm hiểu và ước tính hoá đơn của bạn.