본문 바로가기
WEB|WAS

Apache, Tomcat tuning

by 개폰지밥 2022. 1. 27.
반응형

Apache와 Tomcat이 일정시간이 지나면 끊기는 현상이 발생되어 아래와 같이 조취함.

 

| Apache - workers.properties

worker.list=tomcat
worker.tomcat.port=8019
worker.tomcat.host=xxx.xxx.xxx.xxx
worker.tomcat.ping_mode=A
worker.tomcat.socket_timeout=60
worker.tomcat.connect_timeout=2000
worker.tomcat.socket_keepalive=true
worker.tomcat.connection_pool_timeout=60
worker.tomcat.connect_timeout=10000
worker.tomcat.secret=fido
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1

 

| Tomcat - Server.xml

Connector protocol = "AJP/1.3"
address="xxx.xxx.xxxx.xxx"
port="8019"
ConnectionTimeout="60000"
secret=fido"
redirectPort="8443"

 

Global Properties
Directive Default Description
worker.list ajp13 JK가 사용할 작업자 이름의 쉼표로 구분된 목록입니다. 시작할 때 웹 서버 플러그인은 worker.list 속성에 이름이 나타나는 작업자를 인스턴스화하며, 요청을 매핑할 수 있는 작업자이기도 합니다.
이 지시문은 여러 번 사용할 수 있습니다.

 

Mandatory Directives
Directive Default Description
type ajp13 작업자 유형(ajp12, ajp13, ajp14, jni, lb 또는 status 중 하나일 수 있음). 작업자의 유형은 작업자에게 적용할 수 있는 지시문을 정의합니다.
유형 ajp13 JK가 웹 서버와 Tomcat 간의 통신에 사용하는 기본 작업자 유형입니다. 이 유형의 작업자는 소켓을 통신 채널로 사용합니다. ajp13 프로토콜 스택에 대한 자세한 설명은 AJPv13 프로토콜 사양 을 참조 하십시오. 유형 lb 는 로드 밸런싱 작업자 에 사용되며 유형 상태 작업자 에는 status가 사용됩니다 .
 
ajp14 유형 은 실험적이며 권장되지 않으며 ajp12 유형 은 더 이상 사용되지 않습니다.
 
JNI 작업자는 더 이상 지원되지 않으며 작동하지 않을 수 있습니다. 사용하지 마십시오.

 

connection Directives
Directive Default Description
port 8009 정의된 프로토콜 요청을 수신하는 원격 Tomcat 인스턴스의 포트 번호입니다. 기본값은 작업자 유형에 따라 다릅니다. ajp13 작업자의 경우 기본 포트는 8009 이고 ajp14 작업자 유형의 경우 해당 값은 8011 입니다.
host localhost 백엔드 Tomcat 인스턴스의 호스트 이름 또는 IP 주소입니다. 원격 Tomcat AJP13 프로토콜 스택을 지원해야 합니다. 호스트 이름 에는 콜론(':') 문자로 구분된 포함된 포트 번호가 있을 수 있습니다.
ping_mode - 이 플래그는 설정된 연결이 여전히 작동하는지 확인하기 위해 어떤 조건에서 연결을 검색하는지 결정합니다. 프로브는 빈 AJP13 패킷(CPing)으로 수행되며 시간 초과 내에 적절한 응답(CPong)을 수신할 것으로 예상합니다.
플래그 값은 다음 플래그의 조합일 수 있습니다(여러 값은 구분 기호 없이 결합됨).
 
C (연결): 설정하면 백엔드에 연결한 후 연결을 한 번 검색합니다. 타임아웃은 로 설정할 수 있습니다 connect_timeout. 설정되어 있지 않으면 의 값이 ping_timeout대신 사용됩니다.
 
P (사전 사후): 설정하면 각 요청을 백엔드로 보내기 전에 연결이 검색됩니다. 타임아웃은 로 설정할 수 있습니다 prepost_timeout. 설정되어 있지 않으면 의 값이 ping_timeout대신 사용됩니다.
 
I (간격): 설정하면 정기 내부 유지 관리 주기 동안 연결이 검색되지만 .보다 오래 유휴 상태인 경우에만 해당합니다 connection_ping_interval. 타임아웃은 로 설정할 수 있습니다 ping_timeout.
 
A 설정하면 위의 모든 프로브가 사용됩니다.
 
이 기능은 jk 1.2.27 에 추가되었습니다 . 연결 및 사전 사후 프로빙은 jk 1.2.6 버전 connect_timeout 을 통해 이미 사용 가능 했습니다. prepost_timeout
socket_timeout 0 JK와 원격 호스트 간의 통신 채널에 사용되는 소켓 시간 초과()입니다. 원격 호스트가 지정된 시간 초과 내에 응답하지 않으면 JK는 오류를 생성하고 다시 시도합니다. 0(기본값)으로 설정하면 JK는 모든 소켓 작업에서 무한한 시간 동안 기다립니다.
socket_keepalive false 이 지시문은 웹 서버와 비활성 연결을 끊는 경향이 있는 Tomcat 엔진 사이에 방화벽이 있을 때 사용해야 합니다. 이 플래그는 운영 체제 KEEP_ALIVE에 비활성 연결에 대해 메시지를 보내도록 지시하고(간격은 전역 OS 설정에 따라 다름, 일반적으로 120) 방화벽이 비활성 연결을 차단하는 것을 방지합니다. keepalive를 활성화하려면 이 속성 값을 true 로 설정하십시오 .
방화벽이 비활성 연결을 절단하는 문제는 웹 서버나 Tomcat 모두 절단에 대한 정보를 갖고 있지 않고 이를 처리할 수 없다는 것입니다.
connection_pool_timeout 0 캐시 시간 초과 속성은 JK가 닫기 전에 비활성 소켓을 캐시에 유지해야 하는 시간()을 지정하는 connection_pool_minsize 와 함께 사용해야 합니다. 이 속성은 Tomcat 웹 서버의 스레드 수를 줄이는 데 사용해야 합니다. 기본값 0은 닫기를 비활성화합니다(무한 시간 초과).
각 자식은 요청을 Tomcat에 전달해야 하는 경우 ajp13 연결을 열어 Tomcat 측에서 새 ajp13 스레드를 생성할 수 있습니다.
 
문제는 jp13 연결이 생성된 후 자식이 죽을 때까지 연결을 끊지 않는다는 것입니다. 그리고 웹 서버는 높은 로드를 처리하기 위해 자식/스레드를 계속 실행하기 때문에 자식/스레드가 정적 콘텐츠만 처리하더라도 Tomcat 측에서 사용하지 않은 ajp13 스레드를 많이 가질 수 있습니다.
 
이 시간 간격을 Tomcat server.xml에 있는 AJP 커넥터 의 keepAliveTimeout 속성(명시적으로 설정된 경우) 또는 connectionTimeout 속성과 동기화된 상태로 유지해야 합니다. 그러나 mod_jk의 값은 초 단위로 제공되며 server.xml의 값은 밀리초를 사용해야 합니다.

 

Advanced Worker Directives
Directive Worker Type Default Description
connect_timeout AJP, SUB 0 연결 시간 초과 속성은 연결이 설정된 후 jp13 연결에 대해 PING 요청을 보내도록 웹 서버에 지시했습니다. 매개변수는 PONG 응답을 기다리는 지연 시간(밀리초)입니다. 기본값 0은 시간 초과(무한 시간 초과)를 비활성화합니다.
이 기능은 정지된 Tomcat 문제를 피하기 위해 jk 1.2.6 에 추가되었으며 Tomcat 3.3.2+, 4.1.28+ 5.0.13+ 에서 구현된 ajp13 ping/pong 지원이 필요 합니다. 기본적으로 비활성화되어 있습니다.
secret AJP,SUB,LB - Tomcat AJP 커넥터에서 비밀 키워드를 설정할 수 있습니다. 그런 다음 동일한 비밀 키워드를 가진 작업자의 요청만 수락됩니다.
Tomcat AJP 커넥터 구성에서 secret="secret key word" 속성을 사용하십시오 . (기록 참고: 속성 이름은 2020 2월 이전에 출시된 Tomcat 9.0, 8.x, 7.0 버전에서는 requiredSecret , Tomcat 6.0 이하에서는 request.secret 였습니다.)
 
로드 밸런서에 비밀을 설정하면 모든 구성원이 이 비밀을 상속합니다.
 
이 기능은 jk 1.2.12 에 추가되었습니다 .

 

 

☞ 더 많은 인프라 구축 방법(폐쇄망)을 보고 싶으면 아래 링크를 클릭해주세요.

2021.12.13 - [Linux] - CentOS 7.8 설치 및 putty 접속 (원하는 버전 설치 링크 포함)

2021.12.14 - [Linux] - [CentOS 7.8] local yum repository 구성 (폐쇄망x, 인터넷x)

2021.12.17 - [DATABASE/DB install & upgrade] - CentOS7 Mysql5.7 install (폐쇄망, internet X)

2021.12.22 - [WEB|WAS] - [CentOS7] Apache 설치 (폐쇄망, 인터넷X, Local yum repo)

2021.12.23 - [WEB|WAS] - Apache - Tomcat 연동 (물리적 분리 - 외부망 : WEB, 내부망 : WAS)

2021.12.24 - [Security] - [CentOS7] SSL 설치 및 SSL 적용

2022.01.27 - [WEB|WAS] - Apache, Tomcat tuning

2022.03.16 - [DATABASE] - Mysql, MariaDB PASSWORD Lifetime 설정(만료기간)

반응형

댓글