VisualVM을 사용하여 메모리 문제 모니터링
VisualVM이 ThingWorx 솔루션에 연결된 경우 솔루션에서 메모리, CPU 및 스레드 사용량을 보여주는 실시간 데이터를 검색할 수 있습니다. VisualVM은 일반적인 메모리 문제를 식별하는 데 사용되며 동작의 근본 원인으로 추가로 더 드릴 다운합니다.
ThingWorx 솔루션의 상태가 양호하면 VisualVM은 시간 경과에 따른 일정한 메모리 사용량과 CPU 사용량을 표시합니다. 사용된 메모리 그래프에는 일련의 피크를 보여줍니다. 이는 정리를 수행하기 전에 JVM에서 사용 가능한 메모리를 사용하기 때문입니다. GC 활동은 무시할 수 있는 총 CPU 사용량 백분율(5% 미만)입니다.
시스템에 더 많은 리소스가 필요하면 사용된 메모리 수준은 오랜 시간 동안 상승된 상태로 유지됩니다. 총 CPU 사용량의 백분율로 상수 또는 가끔 매우 높은 GC 활동이 있습니다.
메모리 소모의 그래픽 표시는 GC 로그와 같은 다른 도구의 메모리 메트릭과 유사합니다. VisualVM을 사용하는 경우 JVM 수준에서 특정 메트릭을 가져오지 않습니다. 이는 문제를 시각적으로 표시하기만 합니다. 문제의 근본 원인을 식별하려면 문제를 자세히 분석해야 합니다.
VisualVM에서 메모리 문제가 표시되는 경우 메모리를 가장 많이 사용하는 스레드를 측정합니다. 샘플 > 메모리 > 스레드 할당별 옵션에서 이를 확인합니다.
* 
생산 환경의 샘플링 데이터로 인해 성능이 추가적으로 영향을 받으며 속도가 느린 솔루션이 완전히 응답하지 않게 될 수 있습니다. 생산 환경에서는 샘플러를 진단 데이터를 가져오는 마지막 대안으로 사용합니다.
VisualVM에서 샘플러 옵션을 활성화하면 ThingWorx 솔루션에서 프로그램에서 가장 많은 메모리를 사용하는 스레드를 확인할 수 있습니다. 이러한 스레드가 수행하는 작업을 보려면 샘플러를 중지하고 스레드 탭에서 스레드 덤프를 수집하고, 최상위 스레드 이름에 대한 결과를 검색합니다. 예를 들어, 앞의 이미지에서 OOM_QueryStream 스레드는 QueryStreamEntriesWithData 조회를 수행합니다. 이는 이 서비스가 호출되는 방식에 따라 ThingWorx 솔루션에서 메모리 문제를 트리거하는 것으로 알려져 있습니다.
문제가 있는 경우 솔루션의 스냅샷을 수집할 수 있습니다. 스냅샷은 모든 그래프 및 스레드 덤프를 캡처합니다. 문제를 추가적으로 분석하기 위해 이 데이터를 PTC 지원에 제공할 수 있습니다. 스냅샷을 수집해도 솔루션의 성능에는 영향을 주지 않습니다.
또한 VisualVM을 사용하면 GC 작업을 수동으로 수행하고 힙 덤프를 수집할 수 있습니다. PTC 지원에서 권장하지 않으면 이러한 작업을 수행하지 마십시오.
권장 사항 - 성능이 느린 경우 VisualVM에서 메모리 그래프를 검사하고 메모리를 샘플링하여 사용이 많은 기간을 식별하는 것이 좋습니다.
도움이 되셨나요?