톰캣과 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"통상의 처리 용량을 증가시키기 위해 거짓으로 설정 역방향 조회 도메인 이름을 열 것인지, 그 값도 마찬가지 거의 사용하지 않는다.

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

JVM 튜닝 :

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

A : 메모리 조정은 후자의 JVM 프로세스 시작 매개 변수로 매개 변수 JAVA_OPTS를 시작으로, 파일을 catalina.sh 변수 JAVA_OPTS에 제공되는 루트 디렉토리 톰캣의 bin 디렉토리를 찾을 수 있습니다. Java 가상 머신의 메모리 구조가 다소 복잡하다 게다가, 내가 이해에 많은 사람들이 매우 추상적 믿고, 그것은 힙, 스택, 쓰레기 수집 방법 존 시스템의 여러 부분으로 나누어 져 그래서, 여기에 인터넷에서 내 갈비입니다 도 메모리 구조 :

그것의 메모리 튜닝 조각, 응용 프로그램이 더 합리적 사용할 수 있도록, 자신의 메모리 공간의 크기를 수정하여보다 더 아무것도 아래 바로 당신에게 각 매개 변수의 의미에 대한 자세한 설명을 제공하기 위해 내 컴퓨터 설정의 성능에 따라 내 매개 변수, 없다 :

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

2 -Xms512m 각 가비지 수집이 완료된 후, 메모리 재 할당 JVM 않도록 MB (m)는 동일한 값 -Xmx 설정할 수 : 자바 가상 기계 장치의 힙 메모리의 크기의 초기 값을 설정.

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

4, -Xss128k : 각 스레드의 스택 크기를 설정합니다. 각 스레드 스택 크기가 256K 인 전에 각 스레드 스택의 크기는 JDK5.0 후, 1M이다. 필요한 조정의 더 많은 응용 프로그램 메모리 크기를 스레드. 동일한 물리적 메모리에서이 값을 줄이면 더 많은 스레드를 생성 할 수 있습니다. 그러나, 프로세스 내에서 운영 체제 스레드의 수는 여전히 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으로 개체의 젊은 세대를 설정합니다. 효율성을 향상시킬 수있는 응용 프로그램의 이전 세대의 더하십시오. 이 값이 큰 값으로 설정하면, 젊은 세대의 객체는 객체와 생존 기간의 다음 젊은 세대, 젊은 세대, 즉 재활용에 대한 소개의 증가를 증가시킬 수 생존자 지역에서 여러 번, 복사됩니다.

II : 쓰레기 수집 정책 조정은 톰캣의 루트 디렉토리의 bin 디렉토리가 catalina.sh 파일에 변수를 JAVA_OPTS 설정 찾습니다. 우리 모두는 Java 가상 머신이 기본 가비지 컬렉션을 가지고 있다는 것을 알고 있지만, 다른 쓰레기 수집 메커니즘의 효율성 정확하게 때문에 우리는 종종 가비지 컬렉션 정책 Java 가상 머신이 따라 조정이의, 다르다. 다음은 가비지 컬렉션에 의해 내 전략의 일부를 구성 할 필요가있다 :

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

직렬 콜렉터 :

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

동시 수집기 :

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

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

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

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

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

동시 수집기 :

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

好了,到此我对虚拟机的垃圾回收策略总结就这么多,还是这句话:优化的学习一直在路上,下面还有一张从其他博客中偷到的图,据说以上三种GC机制是需要配合使用的。

추천

출처www.cnblogs.com/jackyu888/p/11572534.html