이 섹션에서는 실제 전투 부분 만 소개합니다. 특정 이론적 매개 변수는 Baidu를 참조하십시오.
필수 도구 : Linux 서버 JMeter 테스트 도구 XSHELL 웹 응용 프로그램
Tomcat의 JVM 매개 변수는 Catalina.sh에서 구성 할 수 있으며 Window에있는 경우 .BAT 파일을 구성 할 수 있습니다.
구성 1 :
여기서 GC 로그 경로를 /home/log/gc.log로 GC 로그를 인쇄하고 초기 힙과 최대 힙 메모리가 50m로 설정되며 출력 덤프 파일이 오버플 로워지면 직렬 쓰레기 수집기를 사용하며 영구 생성 크기는 50m입니다.
웹 응용 프로그램을 해당 디렉토리에 넣고 server.xml을 구성하고 (여기에서 도입되지 않음) Tomcat을 시작하십시오.
처리량 테스트는 압력 테스트 도구 (JMeter)를 사용하여 수행됩니다. 사용하지 않은 학생들은 공식 웹 사이트 http://jmeter.apache.org/에서 다운로드하여 배울 수 있습니다.
사용자 그룹 생성 (10 스레드, 각 스레드 요청 1000 번), HTTP 요청의 정보를 설정하고 집계 보고서를 생성하고 GC 로그를 생성합니다.
먼저 GC 로그를 살펴 보겠습니다.
화면의 전체 GC, 마지막으로 집계 보고서를 확인하십시오.
처리량은 초당 122.7로 유지됩니다. 이 경우 우리는 구식이 기본적으로 가득 차 있음을 알 수 있으며, FullGC 후에 새로운 세대는 약간 남을 것입니다. 일반적으로 전체 GC의 일시 중지 시간이 가장 길고 자주 발생합니다. 분명히 그러한 구성은 불합리합니다.
구성 2 :
이 구성은 주로 최대 힙 메모리를 증가시킵니다. 가상 머신을 자동으로 확장하고 안정적인 힙 메모리 크기를 얻으려면.
82924K의 최대 힙 메모리에주의를 기울이면 약 80m입니다. 이는 가상 머신이 힙 메모리를 80m로 자동 확장하여 안정화시킵니다. 이 구성 테스트는 다음 테스트를위한 안정적인 힙 메모리를 찾는 것입니다.
구성 3 :
힙의 초기 메모리를 128m로 설정하십시오.
구성 2의 결과로부터, 힙 메모리가 최종적으로 80m에서 안정되어 있음을 알 수 있으므로 80m보다 작은 힙 메모리는 많은 수의 GC 반응을 일으킬 가능성이 높으므로 여기서는 힙 메모리를 128m로 설정하여 GC의 수를 줄일 수 있습니다.
처리량이 약간 증가하고 GC의 수가 크게 감소했으며 GC의 시간 간격이 길어 졌다는 것을 알 수 있습니다.
구성 4 :
현재 다중 스레드 병렬 재활용기 인 ParallGC 리사 클러를 사용하고 있습니다.
멀티 스레드 병렬을 사용한 GC 리사클러의 처리량이 약간 개선되었습니다. (ParallAgC 및 SerialGC는 GC 압력이없는 처리량에 거의 영향을 미치지 않습니다.)
구성 5 :
구성 6 :
구성 3의 결론에 따라 GC는 80m 미만의 힙 메모리에서 자주 발생합니다. 특정 GC 압력이있을 때 구성 4에서 얻은 결론과 결합하여 ParallelGC 및 SerialGC의 처리량은 특정 차이를 보여줍니다. 5와 6의 힙 메모리가 64m <80m로 구성되면 자주 GC가 발생합니다. 다른 GC 재활용기를 사용할 때는 이론적으로 처리량에 큰 차이가 있지만 실험의 차이가 크지 않은 이유는 무엇입니까? 이봐, 우리 가족은 가난하다. 싱글 코어 CPU를 사용합니다. 단일 코어의 경우 ParallelGC의 성능 변경은 분명하지 않습니다. SerialGC는 단일 코어 또는 병렬 기능이 약하면 권장됩니다. 조건이있는 학생들은 멀티 코어 서버로 시도 할 수 있습니다!
구성 7 :
parnewGC를 사용해보십시오. 새로운 세대는 ParnewGC를 사용하여 재활용하는 반면, 구식은 여전히 SerialGC를 사용하여 재활용합니다. 성능이 어떻게되는지 보시겠습니까?
직렬 재활용기를 모두 사용하는 것보다 성능이 향상되지만 병렬 리사이클러를 모두 사용하는 것보다 성능이 나빠집니다.
또한 JDK 버전의 업그레이드는 성능을 약간 향상시킬 수 있지만 JDK 버전의 업그레이드에는 특정 위험이 있으며 일부 알려지지 않은 버그는 새 버전의 JDK에 도입 될 수 있습니다.
마지막으로, 일반적으로 사용되는 일부 JVM 구성 매개 변수를 참조에 나열했습니다.
1. 직렬 복구 기간과 관련된 매개 변수
• -xx :+useerialgc : 신규 및 구 세대의 직렬 수집기 사용
• -XX : Survivorratio : 에덴 지역의 크기와 생존자 지역의 비율을 설정
• -xx : pretenuresizethreshold : 큰 물체의 임계 값을 설정하여 노년기에 직접 입력하십시오. 물체의 크기 가이 값을 초과하면 노년에 직접 할당됩니다.
• -xx : maxtenuringthreshold : 노년기에 유입되는 물체의 최대 연령 값을 설정합니다. 각각의 작은 GC 이후, 피험자의 나이는 1에 의해 추가됩니다.이 연령보다 큰 물체는 확실히 노년에 들어갑니다.
2. 병렬 GC 관련 파라미터
• -xx :+useparnewgc : 새로운 세대의 병렬 수집기를 사용하십시오.
• -xx :+useparalleloldgc : 노년기에 병렬 수집기를 사용하십시오
• -xx :+ParallelGCTHREADS : 쓰레기 수집에 사용되는 스레드 수를 설정하며, 일반적으로 CPU 수와 동일한 것으로 설정할 수 있습니다. 많은 CPU가 있으면 상대적으로 작은 값을 설정할 수도 있습니다.
• -xx :+maxgcpausemillis : 최대 쓰레기 수집 일시 중지 시간을 설정하십시오. 그 값은 0보다 큰 정수입니다. 수집기가 작동하면 Java 힙 또는 다른 매개 변수의 크기를 조정하고 가능한 한 MaxGCPausemillis에 대한 일시 중지 시간을 제어합니다.
• -xx : +useadaptivesizepolicy : 적응 형 GC 전략을 켭니다. 이 모드에서는 차세대 크기와 Survivio의 비율 및 구식의 물체의 나이와 같은 매개 변수가 자동으로 조정되어 힙 크기, 처리량 및 일시 중지 사이의 균형 점을 달성합니다.
• -xx :+gctimeratio : 처리량 크기를 설정합니다. 그 값은 0과 100 사이의 인증서입니다. gctimeratio의 값이 n이라고 가정하면, 시스템은 쓰레기 수집에 1/(1+n)를 넘지 않습니다.
3. CMS 수집가와 관련된 매개 변수
• -XX :+USECONCMARKSWEEPGC : 새로운 세대는 병렬 수집기를 사용하는 반면 구식은 CMS+직렬 수집기를 사용합니다.
• -XX : ParallelCMSTHREADS : CMS의 스레드 수를 설정합니다.
• -XX : CMSInitiationOccupancyFraction : 노년 공간이 사용 된 후 CMS 수집기가 트리거되는 양을 설정, 기본값 68%
• -xx : usecmscompactatfullcollection : 쓰레기 수집을 완료 한 후 CMS가 한 번 탈퇴 해야하는지 여부를 설정
• -XX : CMSFullGCBeforecaction : CMS 쓰레기 수집이 몇 배나 설정되고 메모리 압축이 수행되는지 설정하십시오.
• -xx :+cmsclassunloadingEnabled : 클래스 메타 데이터를 복구 할 수 있습니다
• -xx : cmsinitiativeTiperMoccupancyFraction : 영구 점유 비율 이이 백분율에 도달하면 CMS 복구를 시작합니다 (-xx :+cmsclassUnloadEnableded가 활성화 된 경우).
• -XX : USECMSINITINITITINGOCCUPINGONLY : 임계 값에 도달 할 때만 CMS 복구가 수행되는 것을 의미합니다.
• -xx :+cmsincrementalMode : 단일 CPU에 더 적합한 증분 모드를 사용합니다. 증분 모드는 중간에 폐기 된 것으로 표시되며 JDK9에서 완전히 제거됩니다.
4. G1 복구 기간과 관련된 매개 변수
• -XX :+USEG1GC : G1 복구를 사용하십시오
• -xx :+maxgcpausemillis : 최대 쓰레기 수집 일시 중지 시간을 설정하십시오
• -xx :+gcpauseintervalmillis : 일시 중지 시간 간격을 설정합니다.
5. Tlab 관련
• -xx :+usetlab : tlab 할당을 켭니다.
• -xx :+printtlab : print tlab 관련 할당 정보
• -xx : tlabsize : tlab 크기를 설정하십시오
• -xx :+resizetlab : tlab 크기를 자동으로 조정하십시오
6. 다른 매개 변수
• -xx :+disablexplicitgc : 명시 적 GC를 비활성화합니다
• -xx :+explictgcinvokescurncerrent : 동시성을 사용하여 명시 적 GC를 처리하십시오
위의 JVM Tomcat Performance 실용 (권장)은 내가 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.