반응형
기본 설정인 ALB - Apache httpd - Tomcat으로 설정하였을 때는 이슈가 없었는데,
이중화 설정을 IP를 지정하여 HTTPD에서 이중화 설정하는 방식이 아닌 AWS NLB를 이용하여 확장이 가능하도록 진행하였다.
ALB - Apache httpd - NLB - Tomcat으로 설정을 변경한 시점에서 간헐적으로 502 오류가 발생했다. httpd mod_jk 로그에는 연결 실패 로그가 나타났지만, Tomcat에서는 별다른 access 로그가 표시되지 않았다.
httpd - tomcat 사이에서 발생하는 문제인 것 같아서 처리했던 내용을 정리하였다.
- AWS ALB - Httpd KeepAliveTimeout 값 설정
AWS ALB와의 timeout 영향이 아닐까 싶어서 httpd KeepAliveTimeout
값을 ALB의 timeout 값과 동일하게 60으로 설정하였지만 동일하게 발생
KeepAlive On
KeepAliveTimeout 60
- Tomcat connectionTimeout 값 설정
Tomcat AJP설정 중 connectionTimeout
값으로 인해 연결이 끊어질 가능성도 있어서 설정을 변경하였지만 동일한 현상 발생
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
connectionTimeout="5000"
minSpareThreads="25"
maxThreads="256"
acceptCount="100"
disableUploadTimeout="true"
maxConnections="8192"
/>
- connectionTimeout: 연결 수락 후 대기 시간(기본 20000ms = 20초)
- minSpareThreads: 톰캣 실행 시 생성될 스레드 크기(기본 10)
- maxThreads: 스레드 최대 크기(기본 200)
- acceptCount: 연결 요청 최대 대기열(기본 100)
- disableUploadTimeout: 데이터 업로드 시 시간제한 여부(기본 false)
- maxConnections: 최대 연결 유지 수, 연결만 진행하며, 처리를 하지 않음 최대 연결 큐(기본 8192)
- mod_jk 설정 변경
mod_jk설정 중 연결 전후 ping_mode 설정
worker.app.ping_mode=A
worker.app.connection_ping_interval=10000
- ping_mode: Apache에서 Tomcat 상태 확인
- C: Connect 연결 시
connect_timeout
설정 값 기준 연결 대기,connect_timeout
설정이 없는 경우keepAliveTimeout
설정 값 기준 - P: Preport 요청 전송 전 ping 체크
prepost_timeout
설정 값 대기,prepost_timeout
없는 경우connect_timeout
설정 기준 - I: Interval 주기적으로 ping 체크
- A: C, P, I 모든 방식 사용
- C: Connect 연결 시
- connection_ping_interval: ping 체크 주기(기본 10000ms = 10초)
ping_mode 설정 후 해당 현상이 사라졌다.
아마 NLB 연결로 설정한 후 연결된 Tomcat 서버가 유동적으로 변경되어 발생한 것이 아닌가 싶다.
참고
- https://m.blog.naver.com/tmondev/220731906490
- https://taetaetae.github.io/2017/08/28/apache-keep-alive/
- https://rhr0916.tistory.com/148
- https://tomcat.apache.org/tomcat-8.5-doc/config/http.html
#tomcat #apache #web
반응형
'FullStack > 41. WEB.WAS' 카테고리의 다른 글
웹 서비스 성능 개선 - mod_expires 정적 리소스 캐시 사용 (0) | 2022.02.16 |
---|---|
웹 서비스 성능 개선 - 텍스트 리소스 압축(gzip) 전송 (0) | 2022.02.14 |
톰켓 MariaDB를 이용한 세션 관리 (0) | 2022.01.21 |
톰켓 catalinaout 로그 안 쌓는법 (0) | 2022.01.21 |
[TOMCAT] 톰캣을 이용한 세션 공유 설정(UDP 대신 TCP) (1) | 2022.01.03 |