뉴렐릭의 APM 에서 Node VMs 페이지는 문제 해결 성능 문제와 기능 상태 모니터링에 유용한 런타임 데이터를 제공합니다.
필요한 것 Node VMs 페이지의 일부 차트를 사용하려면 Node.js 에이전트 외에 뉴렐릭 네이티브 지표 모듈을 설치해야 합니다. 설치 지침은 Node.js VM 측정을 참조하세요.
Node.js VM 통계 보기 one.newrelic.com > All capabilities > APM & services > (select an app) > Node VMs : 여러 서버가 동일한 애플리케이션에 보고하는 경우 페이지에서 차트를 서버별로 분류합니다. 페이지 상단의 Servers 필터에서 서버를 선택하여 개별 서버에 대한 데이터를 보고 추가 세부정보를 얻을 수 있습니다.
이러한 측정의 급증 또는 상승 추세를 특정 거래와 연관시키려면:
one.newrelic.com > All capabilities > APM & services > (select an app) > Node VMs
으)로 이동합니다.
차트 내에서 클릭하고 끌어 기간을 선택합니다.
거래 페이지 또는 다른 페이지로 이동합니다.
다른 페이지로 이동해도 시간 선택기 선택은 동일하게 유지됩니다.
성능 문제 분석 다음은 개별 Node VMs 차트에서 사용할 수 있는 데이터 요약입니다. 모든 차트를 함께 사용하면 성능 문제를 해결할 수 있습니다. 예를 들어:
응용 프로그램이 더 많은 개체를 사용하기 시작하면 메모리 사용량이 증가하고 가비지 수집(GC)이 더 자주 실행됩니다. GC에 소요되는 시간으로 인해 CPU 사용률이 증가합니다.
비정상적으로 긴 동기 코드 실행은 CPU 사용률을 증가시킬 수 있습니다. 그러면
Event loop max CPU time per tick
차트에 스파이크가 표시됩니다.
GC 일시 중지 시간 가비지 수집에 소요된 시간입니다. 단일 서버의 경우 차트에 평균, 최대 및 분당 총 시간이 표시됩니다. 여러 서버의 경우 차트에 서버별로 그룹화된 총 시간이 표시됩니다.
일반적으로 GC 시간 또는 빈도의 급증은 잠재적인 문제를 나타냅니다.
GC 일시 중지 빈도 분당 GC 실행이 실행된 횟수입니다. 단일 서버의 경우 차트는 GC 유형별로 분류됩니다. 여러 서버의 경우 차트는 서버별로 그룹화된 총 GC 호출(모든 유형 결합) 수를 보여줍니다.
유형별 GC 일시 중지 시간 이 차트는 분당 가비지 수집에 소요된 총 시간을 GC 유형별로 분류하여 보여줍니다. 단일 서버를 볼 때만 표시됩니다. Node.js 버전 및 앱 활동에 따라 다음 유형이 표시될 수 있습니다.
Value
Description
Scavenge
가장 일반적인 가비지 수집 방법입니다. Node.js는 일반적으로 VM이 유휴 상태일 때마다 이들 중 하나를 트리거합니다.
MarkSweepCompact
가장 무거운 유형의 가비지 수집 V8이 수행할 수 있습니다. 이러한 일이 많이 발생하는 경우 프로세스에서 더 적은 수의 개체를 유지하거나 V8의 힙 제한을 늘려야 합니다.
IncrementalMarking
응용 프로그램이 일시 중지된 시간을 줄이기 위해 응용 프로그램 논리와 컬렉션을 인터리브하는 단계적 가비지 컬렉션입니다. Node.js v6 이상에서만 가능합니다.
ProcessWeakCallbacks
가비지 수집이 발생한 후 V8은 해제된 개체에 대해 등록된 약한 참조 콜백을 호출합니다. 이 측정은 주어진 가비지 콜렉션에 대한 첫 번째 약한 콜백의 시작부터 마지막 콜백의 끝까지입니다. Node.js v6 이상에서만 가능합니다.
메모리 사용량 이 차트는 Node.js 프로세스에서 소비한 메모리 양을 보여줍니다. 여러 서버의 경우 차트에 서버별로 그룹화된 총 메모리가 표시됩니다. 단일 서버의 경우 차트는 다음 유형의 메모리로 분할됩니다.
Value
Description
힙이 아닌
V8의 힙 외부 데이터(예: 버퍼, 소켓)에 할당된 메모리입니다.
V8 힙(중고)
V8에서 사용 중인 메모리 양(예: JavaScript 개체)입니다.
V8 힙(무료)
메모리 풀링을 위해 V8에서 따로 설정한 메모리 양입니다. 이 메모리는 활발히 사용되지 않지만 V8이 필요에 따라 더 많이 할당할 수 있도록 따로 남겨둡니다.
CPU 사용률 이 차트는 Node.js 프로세스의 CPU 사용률을 보여줍니다.
여러 서버의 경우 차트는 서버별로 그룹화된 총 CPU 사용률을 보여줍니다. 단일 서버의 경우 차트는 다음 기준으로 분할됩니다.
Value
Description
사용자
사용자 코드를 실행하는 데 소요된 시간을 벽시계 시간으로 나눈 값입니다.
체계
Node.js 프로세스를 대신하여 시스템 커널에서 보낸 시간을 벽시계 시간으로 나눈 값입니다.
이벤트 루프 — 분당 틱 이 차트는 분당 이벤트 루프 틱 수를 보여줍니다. 틱은 실행할 준비가 된 기능이 실행되는 이벤트 루프의 단일 회전입니다.
각 이벤트 루프 턴의 일부로 Node.js는 보류 중인 I/O가 완료될 때까지 기다립니다. I/O 이벤트가 수신되면 이벤트 루프는 이와 관련된 콜백을 실행합니다. 따라서 분당 틱 수는 I/O 이벤트가 발생하는 빈도에 해당합니다.
이벤트 루프 — 틱당 최대 CPU 시간 이 차트는 분당 단일 틱에 소요된 최대 시간을 보여줍니다. 이는 긴 동기 코드 실행을 나타내는 비정상적으로 긴 이벤트 루프 틱을 감지하는 데 유용합니다.
여러 프로세스의 클러스터 보기 동일한 서버의 여러 Node.js 프로세스가 동일한 New Relic 애플리케이션에 보고하면 이 차트에 집계된 데이터가 표시됩니다. 클러스터의 각 작업자 프로세스에는 고유한 별도의 Node.js 런타임이 있고 별도의 데이터를 수집하기 때문입니다.
Clusters
Comments
모든 작업자의 합계
다음 차트는 모든 작업자의 합계를 보여줍니다.
GC 일시 중지 시간 - 분당 총 시간 GC 일시 중지 빈도 유형별 GC 일시 중지 시간 CPU 사용률 분당 이벤트 루프 틱 모든 근로자의 평균
다음 차트는 모든 근로자의 평균을 보여줍니다.
모든 작업자의 최대값
다음 차트는 모든 작업자의 최대값을 보여줍니다.
GC 일시 중지 시간 - 최대 이벤트 루프 — 틱당 최대 CPU 시간