봄 부팅 레이싱 시뮬레이션 높은 코드
@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)
.}) 시작 ();
}
}
}
공용 클래스 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)
.}) 시작 ();
}
}
}
상단
Taobao의 사용 오픈 소스 쇼 - 바쁜 자바 스레드 신속한 조사
- 소개 :
- 저자 : 淘宝 李鼎 (哲良) oldratlee
- 빠른 문제 해결 자바 CPU 성능 문제 (위 너무 높은 우리)의 경우, CPU는 자동으로 자바 프로세스가 소비를 실행하는 많은 스레드를 감지하고 성능 문제 메서드 호출의 원인을 확인하기 위해 자신의 스레드 스택을 인쇄 할 수 있습니다.
- 힘내 주소 : 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 출력.
결과 : GC 유도 CPU 레이싱 인해 스레드 실행 코드 GC 방법에 [5]. WhileTrue 방법은 문제를 찾을 수 있습니다.
Taobao의 문제 해결 아서스 오픈 소스를 사용
- 설명 : 아서스는 업계에서 가장 강력한 알리바바 오픈 소스 자바 진단 도구이다.
- GIT 주소 : https://github.com/alibaba/arthas/blob/master/README_CN.md
- 뿐만 아니라 CPU의 스레드는 온라인 디 컴파일의 조사, 동적 뜨거운 업데이트 작업 코드 온라인 요청 링크 추적 등을 포함한 거의 모든 문제를 해결한다.
-THE 컬 https://alibaba.github.io/arthas/arthas-boot.jar
자바 -jar 아서스 - boot.jar
필요한 조사 과정을 선택
1 + 입력
대시 보드 명령 실행
CPU는 GC 유도 비아 오의 초기 높이를 결정할 수있다
실행 스레드 3 -i 5000보기 CPU 사용량 상위 N 스레드의 스택 -n
결과 : 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 후, 다시 시작 다시 시작한 후이 레코드를 작성하는 문제가있을 것입니다