System Settings

[WEB/WAS 개념 정리 시리즈] 5편 - WAS–DB 구성 및 APM 활용

midworker 2025. 5. 14. 22:27
반응형

[WEB/WAS 개념 정리 시리즈] 5편 - WAS–DB 구성 및 APM 활용

이 글에서는 WAS와 DB 사이의 연동 구조를 정리하고,
Connection Pool(커넥션 풀) 구성, SQL 처리 흐름, 그리고 APM 도입을 통한 실시간 모니터링 방식을 소개합니다.


✅ WAS–DB 연동 흐름

Client → Web → WAS → Connection Pool → DB
  • WAS: 애플리케이션 실행, JDBC 호출
  • DB: 실제 데이터 처리
  • Connection Pool: DB 커넥션을 미리 생성/재사용하여 성능 최적화

✅ Connection Pool(커넥션 풀)이란?

  • DB 커넥션을 매번 생성하면 비용이 큼 → 미리 생성해 Pool로 관리
  • WAS가 커넥션 풀을 통해 DB에 연결 요청
  • 실무에서는 반드시 사용

✅ 커넥션 풀 구성 예 (Tomcat)

<Resource name="jdbc/MyDB"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="50"
          maxIdle="10"
          username="user"
          password="pass"
          driverClassName="oracle.jdbc.OracleDriver"
          url="jdbc:oracle:thin:@192.168.1.100:1521:XE"/>

✅ 커넥션 풀 주요 설정

항목 설명
maxActive 최대 동시 커넥션 수
maxIdle 유휴 상태로 유지할 커넥션 수
validationQuery 커넥션 유효성 테스트 쿼리
testOnBorrow 커넥션 사용 전 유효성 검사

✅ SQL 처리 흐름 요약

  1. WAS는 커넥션 풀에서 커넥션을 빌림
  2. SQL 쿼리를 실행
  3. 결과를 처리 후 커넥션을 풀에 반납
  4. 커넥션 풀은 재사용되며 DB와의 연결을 지속 관리

✅ 커넥션 풀 튜닝 포인트

  • maxActive 값은 DB의 최대 프로세스 수보다 작게 설정
  • testOnBorrow = true + validationQuery 설정 필수
  • slow query 확인을 위한 SQL 로그 활성화
  • 커넥션 timeout 설정 필수 (대기 방지)

✅ APM이란?

Application Performance Management
→ 애플리케이션의 성능을 실시간으로 모니터링하고 분석하는 도구


✅ 주요 APM 기능

기능 설명
실시간 트랜잭션 추적 요청 단위로 흐름 추적 (Web → WAS → DB)
쿼리 분석 느린 쿼리 탐지, 실행 시간 시각화
오류 탐지 예외 발생 지점 파악
WAS 리소스 모니터링 Thread, Memory, GC, Heap 등

✅ APM 적용 예 (Pinpoint 기준)

  1. WAS에 에이전트 설치
  2. 설정 파일에 서비스 정보 입력
  3. JAVA_OPTS에 에이전트 경로 추가
  4. Pinpoint Collector + Web UI 설치 후 확인

✅ 마무리

WAS–DB 구간은 성능 저하의 가장 큰 원인이 되는 구간입니다.
Connection Pool 설정, 쿼리 튜닝, 그리고 APM 도입
WAS 운영에 있어 필수적인 실무 역량입니다.


반응형