컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - JDK 공통 도구를 사용하여 문제 해결 프로세스

JDK 공통 도구를 사용하여 문제 해결 프로세스

jps 포지셔닝 프로세스

jstat 통계 힙 통계

jstack 포지셔닝 문제 스레드

jmap 포지셔닝 문제 객체

-l 매개 변수로 이동하면 전체 클래스 경로 또는 jar 패키지 경로가 인쇄되고, -v 매개 변수는 시작 매개 변수

를 인쇄합니다. 참고: PS -ef | grep Java 는 시작 매개 변수와 jar 경로를 인쇄할 수 있습니다 그러나 클래스 경로

jstat 를 인쇄할 수 없습니다. 힙 영역 사용량 등에 대한 정보

다음 그림에서 jstat -gc 1 1000 5 명령은 PID 1 프로세스 힙에 대한 정보가 1000ms 당 한 번 인쇄됨을 나타냅니다. * *

S0C 는 S0 의 용량 (총 용량), S0U 는 S0 의 used, 즉 사용된 공간 (kb) 을 나타내며 U/C 는 사용률을 얻을 수 있습니다 (예: MU/MC = 메타공간 활용도).

E, o, m 은 각각 Eden 구역, 구 시대, 메타 공간, YGC/YGCT 는 YGC 의 GC 수 /GC 시간, FGC/FGCT 는 FGC 의 GC 수 /GC 시간을 나타냅니다.

-gc 매개 변수는 특정 값을 표시하고, -gcutil 표시 비율

jstack 은 프로세스 내 스레드 정보를 보는 데 사용되며 CPU 문제 해결에 자주 사용됩니다

jstack 사용

이 단계에서는 CPU 가 비교적 높은 스레드를 차지하고 CPU 가동 시간 (예: TIME+ 열) 이 긴 스레드

여기에 문제가 있습니다. CPU 가 얼마나 높습니까?

4 코어 CPU 가 있고, 한 코어는 100 으로 가득 차 있고, 전체 CPU 는 최대 400 까지 달리고 있다고 가정합니다.

while true (while true) 가 있는 경우 CPU 는 보통 9, 100 미만이 될 수 있습니다. while true 도 시간 슬라이스가 순환되기 때문입니다.

또한 CPU 가동 시간도 중요한 지표입니다. 위 그림에서 PID 가 71 인 스레드는 2 시간 18 분 동안 달렸는데 문제가 있을 것입니다.

2 단계, 현재 스레드 정보를 thread dump 파일

3 단계로 내보내고, 이전 단계에서 발견된 문제 스레드의 PID 에 따라 PID 를 16 진수로 변환합니다. thread dump 파일에서 스레드 PID 가 Thread dump 파일에서 이전 단계에서 계산된 스레드 PID 의 16 진수를 검색합니다. 일반적으로 마지막 20 줄을 보면 전체 호출 스택을 볼 수 있습니다.

이 스레드는 Kafka 소비자 스레드

참고: 개발 시

또한 Thread 클래스의 getAllStackTraces 메서드는 현재 가상 시스템의 모든 스레드에 대한 호출 스택을 가져올 수 있으며 개발자가 생산에 불편할 경우 인터페이스를 노출하는 데 사용할 수 있습니다.

jmap 프로세스에 대한 개체 정보를 보는 데 사용되며 메모리 문제 해결에 자주 사용됩니다

jmap-dump: live, format=b, file =/root

주석:

heap dump 파일의 크기는 현재 힙 사용량의 크기와 일치합니다. 힙 사용량이 2G 이면 heap dump 파일의 크기는 2G 이고 heap dump 파일을 내보내는 데 시간이 오래 걸리며 내보내기 프로세스가 발생할 수 있습니다

또한 heap dump 파일은 jhat, jvisualvm, mat 등의 전문 도구로만 볼 수 있으며 grep 등의 명령으로 검색할 수 없습니다.

요약하면 이 명령은 일반적으로 운영 환경에서 거의 사용되지 않습니다.

jmap-histo: live PID 통계 클래스 인스턴스 수 및 바이트 수.

일반적으로 jmap -histo:live PID | grep packge 를 사용하여 메모리 누수 여부를 확인하고 page 는 Java 프로젝트의 패키지 이름

jmap-j-d66 입니다

上篇: 비둘기 발고리 조회 下篇: 안전셔터란 무엇인가요?
관련 내용