[재 인쇄] 그것은 가치가 지불? 등 네 개의 종합 비교 오라클, 오픈 JDK JVM 속성

가치가 지불되어 있습니까? 등 네 개의 종합 비교 오라클, 오픈 JDK JVM 속성

HTTPS : // blog.csdn.net/weixin_45583158/article/details/100143505 

성능이 곳 JDK하지 동일하지 않습니다.

 



REVIEW : 자바 (11)의 출시와 함께, 오라클 JDK 소프트웨어 청구, 많은 기업들이 오라클 JDK에 대한 대안을 찾기 위해 설정된다. 자바 프로그래머가 읽을 오라클 JDK와 다른 JDK 사이의 성능에 큰 차이가없는 것으로 생각됩니다 많은 사람들이있다, 다양한 테스트를 통해 저자는이 질문에 대답.

 

시장의 대안 JVM 출시는 여전히 많이 있습니다. 다른 요인을 고려하는 적절한 JVM의 필요성을 선택합니다. 성능이 중요한 요소이다. 성능은 비행하기가 매우 어렵다. 이 기사에서는 테스트가 다른 JVM에서 비교 테스트를 수행 만들었습니다. 테스트 절차는 JVM 프로 메테우스를 모니터링하여 봄 부팅 REST 응용 프로그램을 포함 Grafana을 사용하여 시각. 그림은 개략도이다. soapui뿐만 아니라, 모든 실행은 컨테이너를 고정 표시기.

 

 


절연 장애

어떻게 확인 다른 요소가 시설에 방해가 없음을 확인합니다. 우리는 할당하려고에 의해 격리를 달성하기 위해 자원의 흐름을 제공 할 수 있습니다. 예를 들어, 전용 CPU 및 메모리의 고정 된 양을 할당하는 단계를 포함한다. 또한 소프트웨어 및 시각화 소프트웨어로드 밸런서, 모니터 (서로 다른 CPU와 메모리 자원 할당)의 리소스를 제한 할 몇 가지 테스트를했다. 하나의 프로세스 부하 및 응답 시간의 측정에 상당한 영향을 미칠하지 않는 것 (A 고정 표시기-작성 V2의의 cpuset 및 메모리 매개 변수를 사용하여) 특정 프로세스에 대한 자원을 할당합니다. 나는 또한 시작, 부하 및 무부하 조건을 비교했다. 서로 다른 경우, 시험 결과는 크게 달라지지 않는다.

프로세스의 특정의 CPU 및 메모리 할당

사용 고정 표시기-작성은 특정의 CPU를 처리하도록 구성 할 수 없습니다. 고정 표시기-작성 V3는 자원 제약의 할당을 지원하지 않는 프로세스에 대한 특정의 CPU를 할당하지 않습니다. 당신은 다중 호스트 환경에서 특정의 CPU를 할당의 가능성이 쉽지 않다 상상할 수있다. 따라서, 나는 고정 표시기-작성됩니다 v2로 파일 마이그레이션 다시,이 버전은 특정의 CPU를 할당 허용한다. 이 소프트웨어는 모니터, CPU 및 CPU에 사용할 수있는이 JVM이 열려 사용하여 분리. 내가 taskset 명령을 사용했다.

환경 테스트와

어떻게 당신은 모든 검사가 정확히 같은 상황에서 수행되는 것을 보장합니까? 그리고 내가 다시 테스트를 실행하는 JVM에 대해 동일한 테스트 시나리오를 실행 내일, 내 결과에 따라 달라질 수 있습니다. 이는 워크로드를 차지하게됩니다 다른 CPU 등의 다양한 원인을 가질 수 있고, CPU는 다른 것들로 바쁜, 아니면 다른 호스트 또는 게스트 운영 체제에서 백그라운드 프로세스를 실행합니다. 첫 번째 테스트와는 또 다른 하나의 JVM JVM을 테스트하더라도, 테스트 후 결과를 비교할 수 없습니다. 예를 들어, 나는 데이터를 수집하기 위해 프로 메테우스를 사용하고 있습니다. 두 번째 실행시, 프로 메테우스 데이터베이스는 더 많은 데이터를 저장할 수 있습니다. 이것은 제 JVM 성능 지표에 영향을 미칠 수있는 새로운 데이터는 감속의 추가 될 수있다. 이 예는 매우 억지 수 있지만 수 있지만 다른 요인을 배제하기위한 조치를 취할 수 있습니다. 이것은 내가 이유의 모든 테스트를 수행하도록 선택할 것입니다.

설정

내 환경은 나를 쉽게 다른 JVM 봄 부팅 응용 프로그램에 네 개의 실행을 시작할 수 있도록하는 고정 표시기-작성 문서가 포함되어 있습니다. JDK를 네 전에, 나는 부하 분산에 대한 haproxy 인스턴스를 추가했다. 이는 모두 동일한 부하 동시에되도록 JVM에 관련된 다른 검사 간의 시간차가 존재하지 않도록한다.

결과를 모니터하기 위해, 나는 마이크로 미터는 프로 메테우스는 JVM 성능을 읽을 수 있도록 사용합니다. 나는 데이터 시각화의 Grafana를 사용 : HTTPS : //grafana.com/dashboards/4701

GraalVM JDK 8의 버전으로 현재 만 사용할 수 있으므로 다른 JVM JDK 8을 사용하기 때문이다. 로컬 호스트 : 8080 / 액츄에이터 / ENV 용기가 실행되면, JVM 액추에이터 URL의 버전에 액세스하여 확인할 수있다

 

 

또는 다음 명령을 사용하여


스토어 Exec을 신속하게 IT 도커 / 오라클 / serverjre :. 자바는 -version 8은
JVM이 버전은 다음입니다 :

GraalVM EC RC9 (8u192)

오픈 JDK 8u191

루어 8u192

오라클 JDK의 8u181


테스트를 시작하려면

여기서 당신은 코드를 다운로드 할 수 있습니다, 다음 명령을 실행합니다 :

./buildjdkcontainers.sh SH </ 사전>
<프리 클래스 = "그라프 그라프는 - 사전"> -f 도커 도커-작성 작성-jdks.yml-까지
당신은에 액세스 할 수 있습니다 :

haproxy 8080 포트

프로 메테우스 9090 포트

Grafana 3000 포트

프로 메테우스는 데이터에 액세스 Grafana로 구성해야

 

 

 

대시 보드에서 다음 구성 Grafana :

 

 


다음으로, 당신은 HTTP 수 : 8080 / 안녕하세요 (HTTP GET) 부하 테스트를 수행하고 Grafana 대시 보드에서 결과를 볼 수 있습니다 : // localhost를합니다.

시스템의 차이를 작동

다른 도커 다른 미러링 OS를 사용합니다. 운영 시스템은 다음과 같은 방식으로 결정될 수있다 :

고정 표시기 간부 - 그것은 저장 / 오라클 / serverjre : 8 고양이의 / etc / * - 릴리스
아줄 / 줄루어 - 오픈 JDK : 8 우분투 18.04 사용

오라클 / graalvm-CE는 : 1.0.0-rc9 오라클 리눅스 서버 7.5을 사용

오픈 JDK : 8 데비안 GNU / 리눅스 9를 사용

저장 / 오라클 / serverjre : 8 사용되는 오라클 리눅스 서버 7.5

나는 이것이 JVM의 실행에 큰 영향이 없을 것이라 생각합니다. OracleJDK 및 Graalvm는 동일한 운영 체제를 사용합니다.

테스트 결과
는 JVM 대시 보드를 사용하여, 당신은 쉽게 그들을 더 연구하기 위해, 차이의 특정 영역을 구분할 수 있습니다.

 

CPU 사용

 


시험 중 GraalVM 가장 높은 전체 CPU 사용량. 최소 오라클 JDK의 CPU 사용량.


응답 시간


최단의 GraalVM 전체 응답 시간은 오픈 JDK 최고의 오라클 JDK와 줄루어 하였다. 평균적으로 GraalVM 오픈 JDK 사이에 30 %에 대한 차이.

 

 

쓰레기 수거


GraalVM는 다른 JDK 클래스보다 더로드. 클래스의 최소 부하를 오픈 JDK. GraalVM 오픈 JDK와의 차이는 25 %에 대해이다. 이 고정 오버 헤드 GraalVM 또는 비율로 사용 클래스 수 있는지 여부를 결정되지 않았다.

 

 

(이 상관 관계는 반드시 인과 관계가되지 않을 수도 있지만)이 추가 클래스 가비지 콜렉션 동안 지연이 발생할 수 있습니다. GC의 일시 정지 시간의 GraalVM 정말 업입니다.

다음은 GC 휴지 시간 그래프의 합이다. 배포 GraalVM 때문에 실패가 가장 긴 GC 일시 정지 시간 (맨 윗줄)되었다.

 

 

메모리 사용

 

 


JVM 메모리 사용량은 매우 흥미 롭다. 상술 한 바와 같이, 오픈 JDK JVM 스택 메모리가 사용된다. 가비지 콜렉션 동작 GraalVM 및 줄루어 비슷한 보이지만, GraalVM 높은 메모리 사용량이있다. 오라클 JDK 가비지 컬렉션 드문. 최소한의 메모리와 평균 최대 오픈 JDK JVM 메모리 루어를 볼 때. 때 오랜 시간이 오라클 JDK를 측정하고, 줄루어 및 GraalVM이 더 안정을 찾는 동안 오픈 JDK 동작이 불안정 보인다.

 

 

개요


이 테스트에서, 나는 스트레스 테스트를 실시 네 개의 서로 다른 JVM에 봄 부팅 나머지 실행을위한 SOAP UI를 사용했다. I는 JVM 인스턴스 폴링 메테우스 (회전 각 5S 일단 데이터를 생성 마이크로 미터), 및 메테우스 Grafana 및 표시 데이터의 사용을 사용한다. 결과는, 그것은 더 악화 때문에 GraalVM 오픈 JDK는 대용으로 적합하지 않은 것을 보여 더 많은 자원, 더 클래스 로딩과 더 이상 쓰레기 수거 시간을 사용합니다.

GraalVM로드 된 클래스보다

GraalVM 느린 응답 시간에 응용 프로그램

GraalVM 가장 높은 CPU 사용량 (느린 응답 시간)

가장 긴 GC를 GraalVM

최소 줄루어 오픈 JDK는 메모리를 사용합니다. 오라클 JDK 및 오픈 JDK, 줄루어 오픈 JDK 및 GraalVM 메모리 사용량과 비교하여 더 안정적이다.

물론, GraalVM 비교적 새로운 인덱스 마이크로 미터를 제공하기 때문에 정확하게 실제 처리량 및 리소스 사용을 표시되지 않을 수 있습니다. 나는 이러한 차이에 대해 설정되었을 수 있습니다. 나는 다른 상황에서 결과를 확인하여 두 번째 문제를 배제.

당신이 GraalVM 다중 언어 기능을 사용하려는 경우, 다른 JVM은 할 수 없습니다. GraalVM 또한 지역 컴파일러 옵션을 (내가 같은 JAR에서 테스트 수행)를 제공합니다. 이 기능은 성능을 크게 향상시킬 수 있습니다.

원본 주소 : HTTPS : //technology.amis.nl/2018/11/23/comparing-jvm-performance-zulu-openjdk-openjdk-oracle-jdk-graalvm-ce/#prettyPhoto

 

저자 마틴 SMEETS는 반경 번역. 이 기사의 무단 전재주십시오, 공공 숫자 메뉴를 찌를하십시오 번역 및 게시 기사의 대열에 합류하는 작은 환영 더 많은 파트너 소스를 나타냅니다 "저희에게 연락하십시오." GIAC 글로벌 인터넷 인프라 총회 6 월 2019 년 심천 역에서 개최됩니다, 숙박 조정 있도록 자바 관련 주제, 깊이 주제를 탐구있을 것입니다.

 

참고 읽기 :

 

왜 QPS 서버를 이동? 자바에 대한 확실한 가이드 튜닝 스레드

큰 PK의 C ++ 파이썬 PHP 자바 NodeJS 성능, 결과는 가장 PHP7입니다 ......

왜 기사 때문에 효율적인 자바 ZGC (11) 읽기

JDK (11) ZGC 기절 추가됩니다 (이하 2 밀리 초)

새로운 자바 (9)의 깊이있는 해석을 제공합니다

그것은 함께 새로운 JIT 컴파일러를 발표에서 올 Java10, 봐

실제 자바 성능 튜닝 가이드 및 유일한 제품의

 

기존 기술 및 아키텍처 연습 문서, 공공 기여를 통해 "연락처"메뉴 번호에 오신 것을 환영합니다. 고 가용성 아키텍처 "ArchNotes"마이크로 채널 대중들로부터 복제하는 것은 지정하십시오 다음과 같은 두 가지 차원 코드가 포함되어 있습니다.

 

고 가용성 아키텍처

인터넷의 건설 방식을 변경합니다


를 눌러 2 차원 코드의 우려 "고 가용성 아키텍처,"아니오 공공
----------------
면책 조항 :이 문서에 원래 문서 CSDN 블로거 '고 가용성 아키텍처를 "이며, CC 4.0 BY를 따라 -SA 저작권 계약, 원본 소스 링크이 문을 첨부 해주세요 재현.
원본 링크 : HTTPS : //blog.csdn.net/weixin_45583158/article/details/100143505

추천

출처www.cnblogs.com/jinanxiaolaohu/p/12160356.html