톰캣 JVM 성능 튜닝 및 간단한 요약

톰캣 JVM 성능 조정에 대한 간단한 요약

내용 :

톰캣 성능 튜닝

JVM의 조정

§        첫째, 메모리 조정

§        둘째, 가비지 컬렉션 정책 조정을

 

톰캣 성능 튜닝

 

, 톰캣 루트 디렉토리 아래 conf 디렉토리를 찾아 server.xml 파일의 내용을 수정합니다. 내가 배운 곡의이 부분에 대한 Tomcat 서버에 대한 설정에 지나지 않는다 동시의 최대 수 톰캣 초기화하는 동안 생성되는 스레드의 수를 설정 물론, 다른 성능 조정 설정이있다가, 아래 내 내 기계의 성능에 의해 설정된 일부 매개 변수 값은 당신에게 그것에 대해 자세한 설명을 제공합니다 :

 

. 1 , URIEncoding = "UTF-. 8" : 설정 톰캣 문자 집합 . 우리가 직접 특정 프로젝트에 깨진 특정 치료에 대해 변환 톰캣 문자 집합이 너무 너무 단단 수정 때문에이 구성은 우리가 일반적으로 설정되어 있지 않습니다.

 

2 , maxThreads = "300" : 현재 세트 톰캣 동시의 최대 개수 . 요청 톰캣 최대 수의 기본 구성은 동시에 150 동시을 지원할 수, 즉, 150이다. 그러나 실제로는, 동시 하드웨어 성능의 최대 수와 CPU의 수는 큰 관계, 더 나은 하드웨어를 가지고, 더 나은 프로세서는 Tomcat이 더 많은 동시를 지원하게됩니다. 응용 프로그램이 250 개 이상의 동시가있는 경우 일반적으로 실제 개발은, 계정에 클러스터 응용 프로그램 서버를 취할됩니다.

 

3 , minSpareThreads = "50" : 설정 현재 톰캣 초기화 할 때 생성 된 스레드의 수, 기본값은 25 .

 

. 4 , acceptCount가 = "250"으로 : 동시 접속 수에 도달 할 때 maxThreads를 또한 수신 큐있다 연결 파라미터 세트 수의 값을 직접 연결을 통해 반환 접속을 거부 . 처리 요구가 스레드의 수는 사용되는 경우에 사용될 수 지정 요청 횟수 이상 처리되지 요청의 수보다, 큐 처리에 넣을 수있다. 기본값은 100입니다. 실제로, 동시 톰캣의 수를 늘리려면, 그리고 경우도 acceptCount 및 maxThreads의 값을 늘려야합니다.

 

5 , enableLookups = "FALSE" : 리버스 룩업 도메인 이름 열 것인지 일반적으로 설정 오류 처리 능력뿐만 아니라, 그 값을 증가 없음 true로를 드물게 사용한다.

 

6 , maxKeepAliveRequests = "1" : nginx를 동적 전송 바람둥이, nginx를 연결 유지되지 않지만, 기본적으로 활성화 바람둥이 엔드 킵 얼라이브, 킵 얼라이브 타임 아웃을 기다리는 기본 설정은 ConnectionTimeout을 사용하지 않는 것입니다. 이 타임 아웃 바람둥이와 가까운 킵 얼라이브 바람둥이의를 설정하는 것이 필요하다. 그렇지 않으면 바람둥이의 소켓 시간 대기를 많이 생성합니다. maxKeepAliveRequests은 = "1"로함으로써, 어느 정도 떨어져 톰캣 다이 피 톰캣 TIME_WAIT 연결 다량 피할 수있다.

 

JVM의 조정

톰캣 자체 또는 JVM에서 실행은, JVM 매개 변수는 Tomcat을 조정하여 우리는 더 나은 성능을 가질 수 있습니다. : 현재 튜닝의 JVM은 두 가지 측면이있다 메모리 튜닝 및 튜닝 가비지 컬렉션 정책을 .

 

메모리 튜닝

설정 톰캣 루트 디렉토리의 bin 디렉토리로 이동 catalina.sh의 파일 시작 매개 변수는 JVM 프로세스 시작 매개 변수로 JAVA_OPTS를 백업하기 때문에, 될 수있는 JAVA_OPTS 변수에.

Java 가상 머신의 메모리 구조가, 그것으로 다소 복잡 분할된다 힙, 스택, 및 가비지 수집 시스템, 메소드 영역 여러 부분과 다른 부품;

 

그것의 메모리 튜닝 조각, 응용 프로그램이 더 합리적 사용할 수 있도록, 자신의 메모리 공간의 크기를 수정하여보다 더 아무것도, 아래의 매개 변수 (파라미터 의미) 개인 호스트 성능 설정에 따라되지 않습니다 :

 

 

1 , -Xmx512m : 집합 자바 가상 기계 장치의 힙의 최대 가능 메모리 용량 : 조 (m) , 전체 힙 사이즈 = 신세대 크기 + 종신 세대 크기 + 영구 세대 크기 .

영구 세대는 일반적으로 고정 된 크기 64m이다. 힙의 다른 분포는, 시스템에 어떤 영향을 미칠 것입니다. 가능한 한 기존 GC의 (노인 보통 비교적 느린 회복)의 수를 줄이기 위해, 새로운 세대의 개체를 예약 할 수 있습니다. 실제로, 초기 값은 전형적으로 이에 따라서 프로그램의 성능을 향상시키는, 실행중인 프로그램에 의해 수행되는 확산 가비지 컬렉션과 상기 공간의 수를 줄이고, 최대 값과 스택 동일하게 설정된다.

 

2 , -Xms512m : 집합 자바 가상 머신의 힙 메모리의 크기의 초기 값, 단위 : MB (m) 각각의 가비지 수집이 완료된 후, 동일 값 -Xmx 설정할 수는 메모리 재 할당 JVM을 방지한다.

 

3 , -Xmn170m가 : 메모리 크기의 젊은 세대를 설정, 단위 : 조원 (m)는 , 시스템 성능에이 값이 더 큰 영향은, 일 관계자는 3/8의 전체 힙에 대한 구성을 권장합니다. 메모리의 젊은 세대 일반 증가하면, 그것은 또한 이전 세대의 크기를 줄일 수 있습니다.

 

4 , -Xss128k : 각 스레드의 스택 크기를 설정합니다 . 각 스레드 후 JDK5.0 스택 크기는 1M 각 스레드 스택 크기가 256K 인 전에. 필요한 조정의 더 많은 응용 프로그램 메모리 크기를 스레드.

동일한 물리적 메모리에서이 값을 줄이면 더 많은 스레드를 생성 할 수 있습니다. 그러나, 프로세스 내에서 운영 체제 스레드의 수는 여전히 3000 및 5000에없는 무제한 세대, 경험, 제한.

 

. 5 , -XX : NewRatio = 4. : (포함 신세대 설정 이든 서바이버 영역)과 구세대 비 (제거 영구 세대) . 4로 설정되어, 젊은 세대의 주 1의 이전 세대 비율 : 4, 전체 스택의 1/5에 대한 젊은 세대의 계정.

 

. 6 , -XX : SurvivorRatio = 4. : 신세대 설정 에덴 영역 서바이버 면적비의 크기 . 4 총면적 서바이버 젊은 세대 1/6 : 4로 설정하고, 생존자 에덴 영역과 두 영역의 비는 2이다.

 

. 7 , -XX =를 MaxPermSize 16m : 의 영구 세대의 크기 설정 16m를 , 상기 상기 영구 생성은 일반적으로 고정 된 크기의 메모리이다 64M .

 

8 , -XX : MaxTenuringThreshold입니다 = 0 : 쓰레기의 최대 사용 기간을 설정합니다.

바로 이전 세대에, 생존자 영역없이 다음 0으로 개체의 젊은 세대를 설정합니다. 효율성을 향상시킬 수있는 응용 프로그램의 이전 세대의 더하십시오.

이 값이 큰 값으로 설정하면, 젊은 세대의 객체는 객체와 생존 기간의 다음 젊은 세대, 젊은 세대, 즉 재활용에 대한 소개의 증가를 증가시킬 수 생존자 지역에서 여러 번, 복사됩니다.

 

둘째, 쓰레기 수집 정책 조정

톰캣의 루트 디렉토리 아래의 bin 디렉토리로 이동은 catalina.sh 파일 JAVA_OPTS 변수를 설정한다. 자바 가상 머신은 기본 가비지 컬렉션 메커니즘을 가지고, 그것 때문에 다른 쓰레기 수집 메커니즘의 효율성이다 다른 , 자주, 그래서 자바 가상 머신의 가비지 컬렉션 정책이 적절하게 조정 . 여기에 구성 할 가비지 컬렉션 전략에 의한 수요의 일부입니다 :

 

: Java 가상 머신 가비지 콜렉션 정책은 일반적으로 분할된다 직렬 콜렉터, 콜렉터 병렬 및 동시 컬렉터 .

 

직렬 콜렉터 :

1 , -XX : + UseSerialGC : 직렬 콜렉터 가비지 콜렉션 정책 대신에 , 즉, 주사 및 단일 스레드 방법을 복사하는 전체 공정은 단일 CPU 시간 요건이 매우없는 일시 중지하도록 작은 공간의 새로운 세대에 적용 할 높은 응용 프로그램, 기본은 주로 가비지 컬렉션의 JDK1.5 양식을하기 전에, 클라이언트 수준의 GC 방법이다.

 

동시 수집기 :

. (1) , - XX : + UseParallelGC 병렬 콜렉터 (우선 처리량) 대신 가비지 콜렉션 정책 즉 주사 전체 복제 프로세스를 통해 수행되고, 멀티,이 응용 프로그램의 짧은 정지 시간이 요구를 CPU를 방식으로 멀티 - 스레드 서버 수준에서 사용되는 기본 GC 방법이다. 이 구성은 젊은 세대 유효합니다. 여전히 시리얼 컬렉터의 이전 세대를 사용하는 동안이 구성은, 젊은 세대가 동시 모음을 사용하도록 할 수 있습니다.

 

2 , -XX = 4의 ParallelGCThreads. : 대부분의 가비지 컬렉션 스레드와 동시에 : 즉 스레드 수 컬렉터 병렬 구성. 이 설정 값은 프로세서의 수와 동일한 것이 바람직하다.

 

. (3) , - XX : + UseParallelOldGC : 구성 이전 세대 가비지 컬렉션 병렬로 수집된다. 병렬 콜렉터의 이전 세대 JDK6.0 지원.

 

4 , -XX : MaxGCPauseMillis = 100 : 때마다 젊은 세대 가비지 콜렉션을 최대 시간을 설정하면이 시간을 충족 할 수없는 경우, JVM이 자동으로이 값을 충족하는 젊은 세대의 크기를 조정합니다.

 

. 5 , -XX : + UseAdaptiveSizePolicy 이 옵션을 설정하고, 자동으로 낮은 목표 주파수에 대응하는 상기 젊은 세대 영역의 크기와 해당 속도 서바이버 영역, 소정의 시간을 선택 또는 시스템을 수집 병렬 콜렉터는,이 값은 병렬 콜렉터를 사용할 것을 권장 장치가 개방되었을 때.

 

동시 수집기 :

1 , -XX : + UseConcMarkSweepGC : 콜렉터 대신 동시 가비지 컬렉션 정책.

 

이 세 가지 메커니즘이 GC의와 함께 필요하다고 말한다.

 

추천

출처www.cnblogs.com/w-hao/p/11519483.html