CPU 비아 오 고 쇼 - 바쁜 자바 스레드 문제 해결 전투 아서스에 스크립트 온라인 문제 해결 및 진단 도구

봄 부팅 레이싱 시뮬레이션 높은 코드

@Service
공용 클래스 TestWhile
{
    * / / * 작업 메모리 개체
    , ConcurrentHashMap의 새로운 새 =의 ConcurrentHashMap의지도 ()의
    개인 무효 whileTrue (문자열 threadName) {
        종료 조건이 설정되어 있지 // 죽음의주기
        (true로)을하면서 {
            // 지속적으로 무한 루프 메모리 GC 결과, 풋 동작 매핑
            에 대해 INT (I = 0; I <= 100000; I ++) {
                map.put (는 Thread.currentThread () getName () + I, I.)
            } // 끝
        } 그동안을 // 단부
    }
    @PostConstruct
    공개 무효 testWhile () {
        무한 루프의 다중 스레드의 동시 실행을 생성 // 루프의 크기
        에 대해 INT (I = 0; I <20이고; I ++) {
            Finali = I INT;
            // 새로운 스레드를 시작 메소드를 호출 whileTrue
            새로운 새로운 스레드 (() -> {
                whileTrue ( "리튬 -"+ Finali)
            .}) 시작 ();
        }
    }
}

상단

1577416718696-696.png

 

Taobao의 사용 오픈 소스 쇼 - 바쁜 자바 스레드 신속한 조사

  1.  소개 :
    1. 저자 : 淘宝 李鼎 (哲良) oldratlee
    2. 빠른 문제 해결 자바 CPU 성능 문제 (위 너무 높은 우리)의 경우, CPU는 자동으로 자바 프로세스가 소비를 실행하는 많은 스레드를 감지하고 성능 문제 메서드 호출의 원인을 확인하기 위해 자신의 스레드 스택을 인쇄 할 수 있습니다.
    3.  힘내 주소 : https://github.com/oldratlee/useful-scripts

 실행 : 컬 -sLk ' https://raw.github.com/oldratlee/useful-scripts/release-2.x/bin/show-busy-java-threads '| -s bash는 - -a 2.log  

 파일에 2.log 출력.

1577416959477-763.png

결과 : GC 유도 CPU 레이싱 인해 스레드 실행 코드 GC 방법에 [5]. WhileTrue 방법은 문제를 찾을 수 있습니다.

 

Taobao의 문제 해결 아서스 오픈 소스를 사용

  1. 설명 : 아서스는 업계에서 가장 강력한 알리바바 오픈 소스 자바 진단 도구이다.
  2. GIT 주소 :  https://github.com/alibaba/arthas/blob/master/README_CN.md
  3. 뿐만 아니라 CPU의 스레드는 온라인 디 컴파일의 조사, 동적 뜨거운 업데이트 작업 코드 온라인 요청 링크 추적 등을 포함한 거의 모든 문제를 해결한다.
-THE 컬 https://alibaba.github.io/arthas/arthas-boot.jar
자바 -jar 아서스 - boot.jar

필요한 조사 과정을 선택

1 + 입력

대시 보드 명령 실행

1577417445506-590.png

CPU는 GC 유도 비아 오의 초기 높이를 결정할 수있다

 

실행 스레드 3 -i 5000보기 CPU 사용량 상위 N 스레드의 스택 -n

1577417597516-899.png

결과 : GC에 의한 높은 CPU 비아 오, 당신은 스레드 실행 방법 whileTrue 문제에 대한 링크를 찾을 수 있습니다.

 

 

문제는 다음을 수행하십시오 컬 -sLk C '서비스에서 권장 https://raw.github.com/oldratlee/useful-scripts/release-2.x/bin/show-busy-java-threads -s bash는 - |' - -a 2.log 후, 다시 시작 다시 시작한 후이 레코드를 작성하는 문제가있을 것입니다

 

추천

출처www.cnblogs.com/atliwen/p/12106503.html