톰캣 튜닝 팁

원본 주소 : HTTPS : //mp.weixin.qq.com/s/7_bz3OPoH3x7xkkwkhJhbw

이 튜닝 Tomcat은, 인터뷰는 종종 물었다. 현재 튜닝 톰캣 두 카테고리로 분류 될 수 있고, 현재의 버전하여 설명 톰캣 8 :

  튜닝 톰캣 자체가 다음 작동 모드 Tomcat이 AJP 커넥터를 사용하지 않도록 커넥터를 수정하는 조정 톰캣 톰캣 톰캣 스레드 풀을 저장하는 정적 및 동적 분리 성능 튜닝의 사용

  다음 JVM 튜닝 튜닝 메모리 JVM을

 

1. 톰캣 자체를 조정

1.1 정적 및 동적 박리를 사용

  성능 Tomcat이 마모가 많이있을 것입니다 경우 Tomcat이 정적 리소스를 처리 할 수 ​​있도록, 그래서 우리가 일반적으로 사용하는 경우 : Nginx에 + Tomcat은, 정적 및 동적 분리를 달성 톰캣은 JSP 파일을 구문 분석에 대해서만 책임을하자, Nginx에 정적 리소스에 대한 액세스 권한을 얻을 수 있습니다.

 

튜닝 스레드 풀 톰캣 1.2

  다음과 같이 집행 인 구성의 server.xml을 열고 바람둥이, 관련 매개 변수입니다.  

< 실행자 이름 = "tomcatThreadPool"  
        namePrefix = "카탈-exec-" 
        maxThreads = "500"  
        minSpareThreads = "20" 
        maxIdleTime = "60000" />

  이름 : 액츄에이터 (스레드 풀)는 이름;

  namePrefix : 각 스레드 이름 접두사 지정된 스레드 풀;

  maxThreads : 스레드 풀 스레드의 최대 수, 요청 수는 750을 초과하는 가정은,이 속성 값이 maxThreads 750으로 설정되어 있는지 의미, 그것은 가장 좋은 방법은 사용하는 것입니다 "톰캣 클러스터를." 요청 (1000) 톰캣 maxThreads = 500 개의 제공된 예는 단일 톰캣 인스턴스의 경우 maxThreads = 1000을 설치하지 않고, 존재하는 경우, 즉,이다.

  minSpareThreads : 스레드 풀의 스레드 수는 있습니다 유휴 (초과 스레드 사망);

  maxIdLeTime이 : 유휴 스레드가 긴 스레드로 간주 유휴 상태 (밀리 초, 구성은 여기에 1 분);

  다른 구성은 실제로 "최선을 공식 문서입니다 읽고 참조 링크를 참조하십시오 ."

 

튜닝 톰캣 1.3 커넥터 커넥터   

< 커넥터 집행자 = "tomcatThreadPool"  
        포트 = "8080"  
        프로토콜 = "HTTP / 1.1" 
        은 ConnectionTimeout = "20000" 
        enableLookups = "false"를 
        URIEncoding = "UTF-8" 
        있는 redirectPort = "8443"  />

  실행 프로그램은 : 상기 액츄에이터 (스레드 풀)에 의해 사용 연결 실행자 1.2 구성 명을 지정한다;

  포트 : 액세스 포트;

  프로토콜 : 프로토콜 처리 들어오는 트래픽을 설정하는 단계; 기본값 인 HTTP / 1.1, 스위칭기구를 사용하여 자동으로 선택되는 비 블록 자바 NIO 커넥터 또는 커넥터 기반 4월 / 네이티브에 기초한다.

  enableLookups = 거짓 : DNS 확인 오프, 성능 손실을 줄이기;

  URIEncoding : 지정되지 않은 경우 문자 인코딩, 기본값은 UTF-8입니다

  minProcessors : 서버가 시작될 때 스레드의 최소 수를 만들기;

  있는 redirectPort : 요청이 아닌 SSL을 지원하지 않는 경우, 포트 리디렉션, 그것을 제거 할 수 있습니다.

  다른 구성은 실제로 "최선을 공식 문서입니다 읽고 참조 링크를 참조하십시오 ."

 

톰캣 수정 1.4 동작 모드

  톰캣의 구성과 함께 제공되는 버전이 수동으로 지정할 수없는 경우에, 커넥터 구성 프로토콜 속성을 의미합니다.

  BIO : Tomcat8 버전 다음은 기본 모드 "IO)를 차단"BIO을 사용하는 것입니다. 각 요청에 대한 높은 동시성 적합하지 처리 스레드를 생성한다.

  NIO : Tomcat8 이상은, 디폴트는 NIO 모드를 사용하는 것입니다 "비 차단 IO를."

  4월 : 4월 4 월 경로 또는 운영 체제가이 기본 경로 인식 톰캣에 할당되지 않은 경우 아파치 휴대용 런타임의 전체 이름은,의 4 월 모델은, 시작 NIO에게 자동 전환 모드를 시작할 수 없습니다, 바람직한 실시 예 톰캣 생산 실행입니다. 그것은 APR을 지원하기 위해 APR과 원주민, 직접 기동을 설치해야합니다, APR은 운영 체제 수준에서 비동기 IO 문제의 해결책이는 APR의 본질은 사전에 필요한 업그레이드 톰캣에 따라 설치해야하므로, JNI 기술은 IO 인터페이스를 기본 운영 체제를 호출하여 사용하는 것입니다 처리 성능 정적 파일은 물론, 정적 및 동적 분리를 사용할 수있다.

 

1.5 안 AJP 커넥터 

  AJP 커넥터를 사용할 수 있도록 AJP는 Nginx에 + Tomca의 t 프레임 워크, 그래서 필요가 없습니다 AJP 프로토콜을 사용하여, 아파치 JServer 프로토콜을 의미합니다. 이 다음 벗어 참고 :

<! - 포트에서 8009 AJP 1.3 커넥터를 정의 -> 
< 커넥터 포트 = "8009" 프로토콜 = "AJP / 1.3" 있는 redirectPort = "8443"  />

 

2. JVM 튜닝

  톰캣은 JVM에서 실행되기 때문에, JVM 튜닝도 매우 필요하다. Catalina.sh는 \ 빈 파일에.

   이전 행의 Cygwin에서에서 = false를 추가 JVM 매개 변수 :

  JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XXermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

   가비지 컬렉션 시간의 힙의 크기를 조정의 목적은 특정 시간 내에 클라이언트를 요청하는 과정을 극대화하기 위해 최소화된다.

 

참고 :

https://tomcat.apache.org/tomcat-8.0-doc/config/index.html

https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

https://tomcat.apache.org/tomcat-8.0-doc/config/executor.html

 

추천

출처www.cnblogs.com/huanshilang/p/11582626.html