Khắc phục sự cố và câu hỏi thường gặp về tính năng Giám sát hiệu suất
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trang này cung cấp các mẹo khắc phục sự cố để bắt đầu sử dụng Performance Monitoring hoặc sử dụng các tính năng và công cụ của Performance Monitoring.
Các bước kiểm tra đầu tiên để khắc phục sự cố
Hai bước kiểm tra sau đây là các phương pháp hay nhất thường được khuyến nghị cho mọi người trước khi tiến hành khắc phục sự cố thêm.
1. Kiểm tra thông báo nhật ký cho các sự kiện hiệu suất
Kiểm tra thông báo nhật ký để đảm bảo rằng SDK Performance Monitoring đang ghi lại các sự kiện hiệu suất.
Cách xem thông báo nhật ký cho các sự kiện hiệu suất
Kiểm tra nhật ký thông báo để xem có thông báo lỗi nào không.
Sau vài giây, hãy tìm một lệnh gọi mạng đến firebaselogging.googleapis.com trong công cụ dành cho nhà phát triển của trình duyệt. Sự hiện diện của lệnh gọi mạng đó cho thấy trình duyệt đang gửi dữ liệu hiệu suất đến Firebase.
Nếu bạn mới bắt đầu sử dụng Performance Monitoring (iOS+ | Android | Web), các mẹo khắc phục sự cố sau đây có thể giúp giải quyết các sự cố liên quan đến Firebase phát hiện SDK hoặc hiển thị dữ liệu hiệu suất đầu tiên của bạn trong bảng điều khiển Firebase.
Đã thêm SDK vào ứng dụng, nhưng bảng điều khiển vẫn yêu cầu thêm SDK
Firebase có thể phát hiện xem bạn đã thêm thành công SDK Performance Monitoring vào ứng dụng của mình hay chưa khi nhận được thông tin về sự kiện (chẳng hạn như lượt tương tác với ứng dụng) từ ứng dụng. Thông thường, trong vòng 10 phút kể từ khi bạn khởi động ứng dụng, bảng điều khiển Hiệu suất của bảng điều khiển Firebase sẽ hiển thị thông báo "Đã phát hiện thấy SDK". Sau đó, trong vòng 30 phút, trang tổng quan sẽ hiển thị dữ liệu đã xử lý ban đầu.
Nếu bạn đã thêm phiên bản SDK mới nhất vào ứng dụng của mình hơn 10 phút mà vẫn không thấy thay đổi nào, hãy kiểm tra thông báo nhật ký để đảm bảo rằng Performance Monitoring đang ghi lại các sự kiện. Hãy thử các bước khắc phục sự cố thích hợp như mô tả bên dưới để khắc phục sự cố thông báo phát hiện SDK bị trì hoãn.
Ứng dụng đang ghi nhật ký sự kiện: các bước khắc phục sự cố
Nếu bạn vẫn đang phát triển cục bộ, hãy thử tạo thêm sự kiện để thu thập dữ liệu:
Phục vụ và xem ứng dụng web của bạn trong môi trường cục bộ.
Tạo sự kiện bằng cách tải các trang phụ cho trang web của bạn, tương tác với ứng dụng và/hoặc kích hoạt các yêu cầu mạng. Đảm bảo bạn vẫn mở thẻ trình duyệt ít nhất 10 giây sau khi trang tải xong.
Đảm bảo rằng bạn đã thêm đối tượng cấu hình Firebase đúng cách vào ứng dụng và bạn chưa sửa đổi đối tượng đó. Cụ thể, hãy kiểm tra những điều sau:
ID ứng dụng web Firebase (appId) trong đối tượng cấu hình là chính xác cho ứng dụng của bạn. Hãy tìm ID ứng dụng Firebase của bạn trong thẻ Ứng dụng của bạn trong settingsCài đặt dự án.
Nếu có vấn đề với đối tượng cấu hình trong ứng dụng của bạn, hãy thử làm như sau:
Xoá đối tượng cấu hình hiện có trong ứng dụng của bạn.
Làm theo hướng dẫn này để lấy một đối tượng cấu hình mới và thêm đối tượng đó vào ứng dụng web của bạn.
Nếu SDK đang ghi lại sự kiện và mọi thứ dường như được thiết lập chính xác nhưng bạn vẫn không thấy thông báo phát hiện SDK hoặc dữ liệu đã xử lý (sau 2 giờ), hãy liên hệ với Bộ phận hỗ trợ Firebase.
Ứng dụng không ghi nhật ký sự kiện: các bước khắc phục sự cố
Đảm bảo rằng SDK Performance Monitoring được khởi chạy đúng cách trong ứng dụng của bạn.
Đảm bảo rằng SDK Performance Monitoringkhông bị tắt thông qua cờ sau:
performance.instrumentationEnabled
Đảm bảo rằng tính năng lưu vào bộ nhớ đệm của trình duyệt đã bị vô hiệu hoá, nếu không, trình duyệt có thể không nhận được bất kỳ chế độ cài đặt đo lường mới nào.
Đóng rồi mở lại thẻ trang web. Kiểm tra lại việc ghi nhật ký.
Nếu bạn vừa thêm SDK Performance Monitoring vào ứng dụng, bạn có thể cần phải khởi động lại hoàn toàn ứng dụng để SDK bắt đầu hoạt động.
Nếu bạn đã thêm SDK thành công và đang sử dụng Performance Monitoring trong ứng dụng, các mẹo khắc phục sự cố sau đây có thể giúp giải quyết các sự cố chung liên quan đến tính năng và công cụ Performance Monitoring.
Đảm bảo rằng SDK Performance Monitoring được khởi chạy đúng cách trong ứng dụng của bạn.
Đảm bảo rằng SDK Performance Monitoringkhông bị vô hiệu hóa thông qua cờ sau:
performance.instrumentationEnabled
Đảm bảo rằng tính năng lưu vào bộ nhớ đệm của trình duyệt đã bị vô hiệu hoá, nếu không, trình duyệt có thể không nhận được bất kỳ chế độ cài đặt đo lường mới nào.
Đóng rồi mở lại thẻ trang web. Kiểm tra lại việc ghi nhật ký.
Nếu bạn vừa thêm SDK Performance Monitoring vào ứng dụng, bạn có thể cần phải khởi động lại hoàn toàn ứng dụng để SDK bắt đầu hoạt động.
Xin lưu ý rằng Performance Monitoring chỉ ghi lại chỉ số độ trễ đầu vào đầu tiên khi người dùng nhấp vào trang web trong vòng 5 giây đầu tiên sau khi tải trang.
Hãy nhớ thiết lập ứng dụng để đo lường chỉ số này. Chỉ số thời gian phản hồi lần tương tác đầu tiên yêu cầu thiết lập thủ công.
Cụ thể, bạn cần thêm thư viện polyfill cho chỉ số này. Để biết hướng dẫn cài đặt, hãy tham khảo tài liệu của thư viện.
Xin lưu ý rằng bạn không bắt buộc phải thêm thư viện polyfill này để Performance Monitoring báo cáo các chỉ số khác của ứng dụng web.
Trang tổng quan về hiệu suất bị thiếu dữ liệu dấu vết tuỳ chỉnh
Bạn có thấy dữ liệu hiệu suất cho các dấu vết được thu thập tự động nhưng không thấy dữ liệu cho dấu vết mã tuỳ chỉnh không? Hãy thử các bước khắc phục sự cố sau:
Kiểm tra chế độ thiết lập các dấu vết mã tuỳ chỉnh được thiết lập thông qua Trace API, đặc biệt là những dấu vết sau:
Tên cho dấu vết mã tuỳ chỉnh và chỉ số tuỳ chỉnh phải đáp ứng các yêu cầu sau: không có khoảng trắng ở đầu hoặc cuối, không có ký tự gạch dưới ở đầu (_) và độ dài tối đa là 32 ký tự.
Bạn phải bắt đầu và dừng tất cả các dấu vết. Mọi dấu vết chưa bắt đầu, chưa dừng hoặc dừng trước khi bắt đầu sẽ không được ghi lại.
Xin lưu ý rằng nếu đang sử dụng phương thức record(), thì bạn không cần phải bắt đầu hoặc dừng dấu vết một cách rõ ràng.
Cờ này chỉ kiểm soát việc thu thập dữ liệu cho các dấu vết mã tuỳ chỉnh (không phải tất cả dữ liệu).
Kiểm tra thông báo nhật ký để đảm bảo rằng Performance Monitoring đang ghi nhật ký các dấu vết mã tuỳ chỉnh dự kiến.
Nếu Performance Monitoring đang ghi lại các sự kiện nhưng không có dữ liệu nào hiển thị sau 24 giờ, hãy liên hệ với Nhóm hỗ trợ Firebase.
Trang tổng quan về hiệu suất bị thiếu dữ liệu yêu cầu mạng
Nếu bạn thiếu dữ liệu yêu cầu mạng, hãy lưu ý những điều sau:
Performance Monitoring tự động thu thập số liệu cho các yêu cầu mạng được API trình duyệt báo cáo. Những báo cáo này không bao gồm các yêu cầu mạng không thành công.
Tùy thuộc vào hành vi của mã và các thư viện mạng mà mã của bạn sử dụng, Performance Monitoring có thể chỉ báo cáo về các yêu cầu mạng đã hoàn tất.
Điều này có nghĩa là các kết nối HTTP/S đang mở có thể không được báo cáo.
Có chuyện gì xảy ra với các Vấn đề hàng đầu trong thẻ Hiệu suất trên trang chủ Dự án?
Chúng tôi đã thay thế Các vấn đề hàng đầu bằng Cảnh báo gần đây để tiếp nối việc ra mắt gần đây tính năng cảnh báo. Tính năng này sẽ tự động thông báo cho bạn khi các ngưỡng mà bạn đặt bị vượt quá. Các vấn đề hiện đã không còn được hỗ trợ nữa và được thay thế bằng cảnh báo.
Bộ chọn ứng dụng ở đầu thẻ Hiệu suất sẽ lọc các mục cảnh báo trong mục Cảnh báo gần đây. Chỉ có ba cảnh báo gần đây nhất cho ứng dụng đã chọn mới được hiển thị.
Vậy còn khả năng đặt ngưỡng cho các vấn đề trong bảng điều khiển thì sao?
Performance Monitoring hỗ trợ cảnh báo cho những chỉ số vượt quá ngưỡng đã xác định. Để tránh nhầm lẫn với các ngưỡng có thể cấu hình này cho số liệu hiệu suất, chúng tôi đã loại bỏ khả năng cấu hình ngưỡng cho sự cố.
Điều gì đã xảy ra với thông tin Chi tiết và Số liệu trong bảng điều khiển Firebase?
Chúng tôi đã thay thế trang Chi tiết và trang Chỉ số bằng một giao diện người dùng (UI) tập trung mới được thiết kế lại để cải thiện cách bạn khắc phục sự cố. Giao diện người dùng khắc phục sự cố mới này cung cấp cùng chức năng cốt lõi như Chi tiết và Số liệu. Để tìm hiểu thêm về cách khắc phục sự cố, hãy xem phần Xem thêm dữ liệu cho một dấu vết cụ thể.
Tại sao số lượng mẫu không như tôi mong đợi?
Performance Monitoring thu thập dữ liệu hiệu suất từ các thiết bị người dùng của ứng dụng. Nếu ứng dụng của bạn có nhiều người dùng hoặc nếu ứng dụng tạo ra một lượng lớn hoạt động liên quan đến hiệu suất, thì Performance Monitoring có thể giới hạn việc thu thập dữ liệu đối với một nhóm nhỏ thiết bị để giảm số lượng sự kiện được xử lý. Các giới hạn này đủ cao để ngay cả khi có ít sự kiện hơn, các giá trị số liệu vẫn đại diện cho trải nghiệm ứng dụng của người dùng.
Để quản lý lượng dữ liệu mà chúng tôi thu thập, Performance Monitoring sử dụng các lựa chọn lấy mẫu sau:
Giới hạn tốc độ trên thiết bị: Để ngăn thiết bị gửi đột ngột hàng loạt dấu vết, chúng tôi giới hạn số lượng dấu vết mã và yêu cầu mạng được gửi từ một thiết bị là 300 sự kiện sau mỗi 10 phút. Phương pháp này bảo vệ thiết bị khỏi các thiết bị đo vòng lặp có thể gửi một lượng lớn dữ liệu hiệu suất và ngăn chặn một thiết bị duy nhất làm sai lệch các phép đo hiệu suất.
Lấy mẫu động: Performance Monitoring thu thập một số lượng hạn chế các dấu vết mã và dấu vết yêu cầu mạng cho mỗi ứng dụng hàng ngày trên tất cả người dùng ứng dụng. Tốc độ lấy mẫu động được lấy trên các thiết bị (sử dụng Firebase Remote Config) để xác định xem một thiết bị ngẫu nhiên có nên ghi lại và gửi dấu vết hay không. Thiết bị không được chọn để lấy mẫu sẽ không gửi bất kỳ sự kiện nào. Tốc độ lấy mẫu động tùy thuộc vào từng ứng dụng và được điều chỉnh để đảm bảo tổng khối lượng dữ liệu thu thập được luôn ở mức dưới giới hạn.
Phiên người dùng gửi dữ liệu chi tiết bổ sung từ thiết bị của người dùng, yêu cầu nhiều tài nguyên hơn để thu thập và gửi dữ liệu. Để giảm thiểu tác động của phiên người dùng, Performance Monitoring cũng có thể hạn chế số lượng phiên.
Giới hạn tốc độ phía máy chủ: Để đảm bảo rằng các ứng dụng không vượt quá giới hạn lấy mẫu, Performance Monitoring có thể sử dụng tính năng lấy mẫu phía máy chủ để loại bỏ một số sự kiện nhận được từ thiết bị. Mặc dù loại giới hạn này không làm thay đổi hiệu quả của số liệu của chúng tôi, nhưng nó có thể gây ra những thay đổi nhỏ trong mô hình, bao gồm:
Số lượng dấu vết có thể khác nhau tùy theo số lần thực thi một đoạn mã.
Các dấu vết được liên kết chặt chẽ trong mã có thể có số lượng mẫu khác nhau.
Điều gì đã xảy ra với tab Sự cố trong bảng điều khiển?
Chúng tôi đã thay thế thẻ Vấn đề bằng tính năng Cảnh báo. Tính năng này sẽ tự động thông báo cho bạn khi ngưỡng bạn đặt bị vượt quá. Bạn không còn cần phải kiểm tra bảng điều khiển Firebase theo cách thủ công để xác định trạng thái của một ngưỡng nữa. Để tìm hiểu về Cảnh báo, hãy xem bài viết Thiết lập cảnh báo cho các vấn đề về hiệu suất.
Điều gì đã xảy ra với thẻ Trên thiết bị và Mạng trong bảng điều khiển?
Làm thế nào để tôi xem được các dấu vết trên những trang đó?
Chúng tôi đã thiết kế lại phần Performance Monitoring của bảng điều khiển Firebase để tab Bảng điều khiển hiển thị các số liệu chính và tất cả dấu vết của bạn trong một không gian. Trong quá trình thiết kế lại, chúng tôi đã xóa các trang Trên thiết bị và Mạng.
Bảng theo dõi ở cuối tab Bảng điều khiển có tất cả thông tin giống như thông tin hiển thị trên tab Trên thiết bị và Mạng, nhưng có thêm một số tính năng, bao gồm khả năng sắp xếp theo dõi theo phần trăm thay đổi cho một số liệu cụ thể. Để xem tất cả các chỉ số và dữ liệu cho một dấu vết cụ thể, hãy nhấp vào tên dấu vết trong bảng dấu vết.
Xem các dấu vết của bạn trong các thẻ phụ sau đây của bảng dấu vết:
Theo dõi yêu cầu mạng (cả sẵn có và tùy chỉnh) — tab phụ Yêu cầu mạng
Dấu vết mã tùy chỉnh — tab phụ Dấu vết tùy chỉnh
Dấu vết khởi động ứng dụng, ứng dụng ở chế độ nền trước, ứng dụng ở chế độ nền sau — tab phụ Dấu vết tùy chỉnh
Dấu vết kết xuất màn hình – thẻ phụ Kết xuất màn hình
Theo dõi tải trang — tab phụ Tải trang
Để biết thông tin chi tiết về bảng dấu vết và cách xem các chỉ số và dữ liệu, hãy truy cập vào trang tổng quan về bảng điều khiển (iOS+ | Android | Web).
Tại sao số lượng khung hình chậm và đóng băng không như tôi mong đợi?
Khung hình kết xuất chậm và khung hình bị treo được tính toán với tốc độ làm mới giả định của thiết bị là 60Hz. Nếu tốc độ làm mới của thiết bị thấp hơn 60 Hz, mỗi khung hình sẽ có thời gian kết xuất chậm hơn vì có ít khung hình được kết xuất hơn mỗi giây.
Thời gian kết xuất chậm hơn có thể khiến nhiều khung hình chậm hoặc bị đóng băng được báo cáo vì nhiều khung hình sẽ được kết xuất chậm hơn hoặc bị đóng băng. Tuy nhiên, nếu tốc độ làm mới của thiết bị cao hơn 60Hz, mỗi khung hình sẽ có thời gian hiển thị nhanh hơn.
Điều này có thể khiến ít khung hình bị chậm hoặc bị treo được báo cáo hơn. Đây là một hạn chế hiện tại trong SDK Performance Monitoring.
Làm cách nào để thêm SDK JS Performance Monitoring nhỏ hơn, có không gian tên ("độc lập") vào ứng dụng web của tôi?
Nếu Performance Monitoring là sản phẩm duy nhất của Firebase trong ứng dụng, bạn có thể sử dụng SDK Performance Monitoring độc lập (và tập lệnh tiêu đề được đề xuất bên dưới) nếu quan tâm đến:
sử dụng thư viện có không gian tên
giảm kích thước gói SDK
trì hoãn việc khởi chạy SDK cho đến sau khi trang của bạn tải
Để đưa SDK Performance Monitoring độc lập vào ứng dụng của bạn và trì hoãn việc khởi tạo sau khi trang của bạn tải xong:
Tập lệnh trên tải SDK độc lập theo cách không đồng bộ, sau đó khởi tạo Firebase sau khi sự kiện onload của cửa sổ được kích hoạt. Chiến thuật này làm giảm tác động mà SDK có thể gây ra đối với số liệu tải trang vì trình duyệt đã báo cáo số liệu tải của mình khi bạn khởi tạo SDK.
Tìm hiểu về SDK Performance Monitoring độc lập và tập lệnh tiêu đề
SDK độc lập này được tối ưu hoá về kích thước; khi được nén bằng gzip, kích thước của SDK này là khoảng 10 KB. Nó có tất cả các chức năng của Firebase Performance Monitoring cùng với một số chức năng tối thiểu của SDK Firebase cốt lõi.
Firebase Performance Monitoring sử dụng API fetch và Promise không khả dụng trên các trình duyệt cũ hơn. Các polyfill cho những API này có trong SDK Firebase Performance Monitoring JS tiêu chuẩn, nhưng bị bỏ qua trong SDK độc lập để giảm kích thước.
Một phần của SDK Performance Monitoring dựa vào Resource Timing API để lấy các chỉ số tải trang từ trình duyệt.
Đoạn mã sau đây phân tích đoạn mã tiêu đề bao gồm cả việc trì hoãn quá trình khởi tạo SDK:
(function(sdkSource,firebaseConfigObject){functionload(f,c){//CreatesascripttagtoloadthestandaloneSDKvarsdkScript=document.createElement('script');//Setsittoanasyncscriptsothatitdoesn't interfere with page loadsdkScript.async=1;//SetsthesourceofthescriptsdkScript.src=f;//Insertsthescriptintotheheadofthepagevars=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(sdkScript,s);}//Callstheloadmethodload(sdkSource);//InitializestheSDKonlywhentheonloadmethodiscalledwindow.addEventListener('load',function(){firebase.initializeApp(firebaseConfigObject).performance();});})(performance_standalone,firebaseConfig);
trong đó,
performance_standalone là 'https://www.gstatic.com/firebasejs/12.6.0/firebase-performance-standalone.js'
Xử lý và hiển thị dữ liệu gần như theo thời gian thực
Dữ liệu hiệu suất "gần thời gian thực" có nghĩa là gì?
Firebase Performance Monitoring xử lý dữ liệu hiệu suất đã thu thập khi dữ liệu được gửi đến, nhờ đó dữ liệu được hiển thị gần như theo thời gian thực trong bảng điều khiển Firebase. Dữ liệu đã xử lý sẽ xuất hiện trong bảng điều khiển trong vòng vài phút sau khi được thu thập, do đó có thuật ngữ "gần như theo thời gian thực".
Làm cách nào để nhận dữ liệu hiệu suất gần với thời gian thực cho ứng dụng của tôi?
Để tận dụng khả năng xử lý dữ liệu gần theo thời gian thực, bạn chỉ cần đảm bảo rằng ứng dụng của mình sử dụng phiên bản SDK Performance Monitoring tương thích với tính năng xử lý dữ liệu theo thời gian thực.
Sau đây là các phiên bản SDK tương thích theo thời gian thực:
iOS – phiên bản 7.3.0 trở lên
tvOS – phiên bản 8.9.0 trở lên
Android – phiên bản 19.0.10 trở lên (hoặc Firebase Android BoM phiên bản 26.1.0 trở lên)
Web – phiên bản 7.14.0 trở lên
Xin lưu ý rằng bạn nên sử dụng phiên bản SDK mới nhất, nhưng mọi phiên bản được liệt kê ở trên sẽ cho phép Performance Monitoring xử lý dữ liệu của bạn gần như theo thời gian thực.
Những phiên bản nào của SDK Performance Monitoring được coi là tương thích với thời gian thực?
Sau đây là các phiên bản SDK tương thích với tính năng xử lý dữ liệu theo thời gian thực:
iOS – phiên bản 7.3.0 trở lên
tvOS – phiên bản 8.9.0 trở lên
Android – phiên bản 19.0.10 trở lên (hoặc Firebase Android BoM phiên bản 26.1.0 trở lên)
Web – phiên bản 7.14.0 trở lên
Xin lưu ý rằng bạn nên sử dụng phiên bản SDK mới nhất, nhưng mọi phiên bản được liệt kê ở trên sẽ cho phép Performance Monitoring xử lý dữ liệu của bạn gần như theo thời gian thực.
Nếu tôi không cập nhật ứng dụng để sử dụng phiên bản SDK tương thích với thời gian thực thì sao?
Nếu ứng dụng của bạn không sử dụng phiên bản SDK tương thích theo thời gian thực, thì bạn vẫn sẽ thấy tất cả dữ liệu hiệu suất của ứng dụng trong bảng điều khiển Firebase. Tuy nhiên, việc hiển thị dữ liệu hiệu suất sẽ bị chậm trễ khoảng 36 giờ kể từ thời điểm thu thập dữ liệu.
Tôi đã cập nhật lên phiên bản SDK tương thích theo thời gian thực, nhưng một số người dùng vẫn đang sử dụng các phiên bản cũ của ứng dụng. Tôi có tiếp tục thấy dữ liệu hiệu suất của họ trong bảng điều khiển Firebase không?
Có! Bất kể ứng dụng sử dụng phiên bản SDK nào, bạn sẽ thấy dữ liệu hiệu suất từ tất cả người dùng.
Tuy nhiên, nếu bạn đang xem dữ liệu gần đây (cách đây không quá 36 giờ), thì dữ liệu hiển thị là từ người dùng các phiên bản ứng dụng sử dụng phiên bản SDK tương thích theo thời gian thực. Tuy nhiên, dữ liệu không gần đây bao gồm dữ liệu hiệu suất của tất cả các phiên bản ứng dụng.