Firebase 또는 Performance Monitoring에 대해 알려진 중단이 있는 경우 Firebase 상태 대시보드를 확인하세요.
Performance Monitoring 시작하기
Performance Monitoring(iOS+ | Android | 웹)을 시작하는 경우 다음 문제 해결 팁을 참조하세요. 이 팁은 Firebase에서 SDK를 감지하거나 Firebase Console에 성능 데이터를 처음 표시할 때 발생할 수 있는 문제를 해결하는 데 도움이 됩니다.
앱에 SDK를 추가했지만 Console에 SDK를 추가하라는 메시지가 계속 표시됨
Firebase는 앱에서 이벤트 정보(예: 앱 상호작용)를 수신하면 앱에 Performance Monitoring SDK가 성공적으로 추가된 것으로 간주합니다. 일반적으로 앱을 시작한 후 10분 이내에 Firebase Console의 성능 대시보드에 'SDK 감지됨' 메시지가 표시됩니다. 그런 다음 30분 이내에 대시보드에 초기 처리된 데이터가 표시됩니다.
앱에 최신 버전의 SDK를 추가하고 10분이 경과한 후에도 변경사항이 표시되지 않으면 로그 메시지를 확인하여 Performance Monitoring이 이벤트를 로깅하고 있는지 확인하세요. 아래의 설명대로 적절한 문제 해결 단계를 수행하여 SDK 감지 메시지 지연 문제를 해결하세요.
앱에서 이벤트를 로깅함: 문제 해결 단계
여전히 로컬에서 개발 중인 경우 데이터 수집을 위해 더 많은 이벤트를 생성해 보세요.
로컬 환경에 웹 앱을 제공하고 확인합니다.
사이트의 하위 페이지를 로드하고, 앱과 상호작용하거나 네트워크 요청을 트리거하여 이벤트를 생성합니다. 페이지 로드 후 10초 이상 브라우저 탭을 열어두어야 합니다.
Firebase 구성 객체를 앱에 올바르게 추가했고 해당 객체를 수정하지 않았는지 확인합니다. 특히 다음 사항을 확인하세요.
구성 객체의 Firebase 웹 앱 ID(appId)가 앱에 적합합니다. settings프로젝트 설정의 내 앱 카드에서 Firebase 앱 ID를 찾아보세요.
Performance Monitoring은 정의된 기준을 초과하는 측정항목에 대한 알림을 지원합니다. 성능 측정항목에 구성 가능한 기준과 혼동을 피하기 위해 문제에 대한 기준을 구성하는 기능을 삭제했습니다.
Firebase Console의 세부정보 및 측정항목 정보는 어떻게 되었나요?
문제 해결 과정을 개선하기 위해 세부정보 및 측정항목 페이지를 중앙 집중식 사용자 인터페이스(UI)로 새롭게 디자인했습니다. 새 문제 해결 UI는 기존 세부정보 및 측정항목 페이지와 동일한 핵심 기능을 제공합니다. 문제 해결에 대한 자세한 내용은 특정 trace에 대한 추가 데이터 보기를 참조하세요.
샘플 수가 예상과 다른 이유는 무엇인가요?
Performance Monitoring은 앱의 사용자 기기에서 성능 데이터를 수집합니다. 애플리케이션에 사용자가 많거나 앱에서 대량의 성능 활동을 생성할 경우 Performance Monitoring은 데이터 수집을 기기의 하위 집합으로 제한하여 처리된 이벤트 수를 줄일 수 있습니다. 이러한 한도는 충분히 높아서 이벤트 수가 훨씬 적더라도 측정항목 값이 여전히 사용자의 앱 환경을 나타낼 수 있습니다.
수집하는 데이터 볼륨을 관리하기 위해 Performance Monitoring은 다음 샘플링 옵션을 사용합니다.
기기 내 비율 제한: 기기에서 갑작스러운 trace 버스트가 발생하는 것을 방지하기 위해 Google은 기기에서 전송되는 코드 및 네트워크 요청 trace의 수를 10분마다 이벤트 300개로 제한합니다. 이 방식은 대량의 성능 데이터를 전송할 수 있는 루프 계측으로부터 기기를 보호하고, 단일 기기가 성능 측정을 왜곡하지 않도록 합니다.
동적 샘플링: Performance Monitoring은 모든 앱 사용자의 앱당 일일 코드 trace의 경우 제한된 수, 네트워크 요청 trace의 경우 제한된 수를 수집합니다. Firebase Remote Config을 사용하여 동적 샘플링 레이트를 기기 내로 가져와 임의 기기에서 trace를 캡처하고 전송해야 하는지 결정합니다. 샘플링용으로 선택되지 않은 기기는 이벤트를 전송하지 않습니다. 동적 샘플링 레이트는 앱별로 적용되며 수집된 데이터의 전체 볼륨이 한도를 초과하지 않도록 조정됩니다.
사용자 세션은 사용자 기기에서 추가 세부 데이터를 전송하므로 데이터를 캡처하고 전송하려면 더 많은 리소스가 필요합니다. 사용자 세션의 영향을 최소화하기 위해 Performance Monitoring은 세션 수를 제한할 수도 있습니다.
서버 측 비율 제한: 앱이 샘플링 한도를 초과하지 않도록 하기 위해 Performance Monitoring은 서버 측 샘플링을 사용하여 기기에서 수신된 일부 이벤트를 삭제할 수 있습니다. 이러한 유형의 제한은 측정항목의 효과를 변경하지는 않지만 다음과 같은 사소한 패턴 변화가 발생할 수 있습니다.
trace 수는 코드 실행 횟수와 다를 수 있습니다.
코드에서 밀접하게 연결된 trace는 각각 다른 수의 샘플을 포함할 수 있습니다.
Console의 문제 탭은 어떻게 되었나요?
사용자가 설정한 기준을 초과하면 자동으로 알림을 전송하는 알림 기능으로 문제 탭을 대체했습니다. 더 이상 기준 상태를 확인하기 위해 Firebase Console을 직접 살펴볼 필요가 없습니다. 알림에 대해 자세히 알아보려면 성능 문제에 관한 알림 설정을 참조하세요.
Console의 기기별 및 네트워크 탭은 어떻게 되었나요?
해당 페이지에 있는 trace를 보려면 어떻게 해야 하나요?
대시보드 탭에 주요 측정항목과 모든 trace가 한 공간에 표시되도록 Firebase Console의 Performance Monitoring 섹션을 새롭게 디자인했습니다. 디자인 개편에 따라 기기별 및 네트워크 페이지가 삭제되었습니다.
기기별 및 네트워크 탭에 표시되었던 것과 동일한 모든 정보가 대시보드 탭 하단의 trace 테이블에 표시되며, 특정 측정항목의 변화율을 기준으로 trace를 정렬하는 기능을 비롯한 일부 기능이 추가되었습니다. 특정 trace의 모든 측정항목과 데이터를 보려면 trace 테이블에서 trace 이름을 클릭하세요.
trace 테이블의 다음 하위 탭에서 trace를 확인합니다.
네트워크 요청 trace(즉시 사용 가능 및 커스텀) — 네트워크 요청 하위 탭
커스텀 코드 trace — 커스텀 trace 하위 탭
앱 시작, 포그라운드 앱, 백그라운드 앱 trace - 커스텀 trace 하위 탭
화면 렌더링 trace — 화면 렌더링 하위 탭
페이지 로드 trace — 페이지 로드 하위 탭
trace 테이블과 측정항목 및 데이터 보기에 대한 자세한 내용은 Console 개요 페이지를 참조하세요(iOS+ |
Android |
웹).
느린 프레임과 정지된 프레임 수가 예상과 다른 이유는 무엇인가요?
느린 렌더링 프레임과 정지된 프레임은 60Hz의 기기 새로고침 빈도로 가정하여 계산됩니다. 기기 새로고침 빈도가 60Hz보다 낮은 경우 초당 렌더링되는 프레임이 적기 때문에 각 프레임의 렌더링 시간이 느려집니다.
렌더링 시간이 느리면 더 많은 프레임이 더 느리게 렌더링되거나 정지되기 때문에 느린 프레임이나 정지된 프레임이 더 많이 보고될 수 있습니다. 그러나 기기 새로고침 빈도가 60Hz보다 높으면 각 프레임의 렌더링 시간이 더 빨라집니다.
이로 인해 느린 프레임이나 정지된 프레임이 더 적게 보고될 수 있습니다. 이는 Performance Monitoring SDK의 현재 제한사항입니다.
웹 앱에 더 작은 네임스페이스화된 Performance Monitoring JS SDK('독립형' SDK)를 추가하려면 어떻게 해야 하나요?
Performance Monitoring이 앱에 있는 유일한 Firebase 제품인 경우 다음 작업이 필요하면 독립형 Performance Monitoring SDK와 아래의 권장 헤더 스크립트를 사용하세요.
네임스페이스화된 라이브러리 사용
SDK 패키지 크기 줄이기
페이지가 로드된 이후로 SDK 초기화 연기
앱에 독립형 Performance Monitoring SDK를 포함하고 페이지가 로드된 이후로 초기화를 연기하려면 다음을 수행합니다.
위 스크립트는 독립형 SDK를 비동기식으로 로드한 후 창의 onload 이벤트가 발생한 다음에 Firebase를 초기화합니다. 이 방법을 사용하면 SDK 초기화 시점에 브라우저에서 이미 페이지 로드 측정항목을 보고했기 때문에 SDK가 페이지 로드 측정항목에 미치는 영향을 줄여줍니다.
독립형 Performance Monitoring SDK 및 헤더 스크립트 알아보기
이 독립형 SDK는 크기를 줄이는 데 최적화되어 있습니다. gzip으로 압축한 경우 그 크기는 약 10kb입니다. 이 SDK에는 Firebase Performance Monitoring의 모든 기능뿐 아니라 Firebase Core SDK의 최소 기능도 포함되어 있습니다.
Firebase Performance Monitoring은 이전 브라우저에서는 제공되지 않는 fetch 및 Promise API를 사용합니다. 표준형 Firebase Performance Monitoring JS SDK에는 이러한 API의 polyfill이 포함되어 있지만 독립형 SDK에서는 크기를 줄이기 위해 생략되었습니다.
Performance Monitoring SDK는 Resource Timing API를 부분적으로 활용하여 브라우저에서 페이지 로드 측정항목을 가져옵니다.
다음 스니펫은 SDK 초기화를 포함 및 지연시키는 헤더 스크립트를 세분화한 것입니다.
(function(sdkSource, firebaseConfigObject) {
function load(f, c) {
// Creates a script tag to load the standalone SDK
var sdkScript = document.createElement('script');
// Sets it to an async script so that it doesn't interfere with page load
sdkScript.async = 1;
// Sets the source of the script
sdkScript.src = f;
// Inserts the script into the head of the page
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(sdkScript, s);
}
// Calls the load method
load(sdkSource);
// Initializes the SDK only when the onload method is called
window.addEventListener('load', function() {
firebase.initializeApp(firebaseConfigObject).performance();
});
})(performance_standalone, firebaseConfig);
Firebase Performance Monitoring은 수집된 성능 데이터를 들어오는 대로 처리하므로 Firebase Console에 데이터가 실시간에 가깝게 표시됩니다. 처리된 데이터는 수집 후 몇 분 내에 Console에 표시되므로 '실시간에 가까운'이라는 용어를 사용합니다.
실시간에 가까운 데이터 처리의 이점을 활용하려면 앱에서 실시간 호환 SDK 버전을 사용하는지 확인합니다.
앱의 실시간에 가까운 성능 데이터를 가져오려면 어떻게 해야 하나요?
실시간에 가까운 데이터 처리의 이점을 활용하려면 앱에서 실시간 데이터 처리와 호환되는 Performance Monitoring SDK 버전을 사용하는지 확인하면 됩니다.