PI_PO

JDBC 연계 방식별 타임아웃 설정 정리

피오농부 2025. 3. 24. 05:58
반응형

JDBC 연계를 통해 데이터베이스(DB)와 SAP PI/PO를 연동할 때, 적절한 타임아웃 설정이 중요합니다. 타임아웃을 적절히 설정하지 않으면 시스템 리소스가 낭비되거나 장애가 발생할 수 있습니다. 본 문서에서는 주요 JDBC 타임아웃 파라미터를 정리하고, 각 데이터베이스(DB)별 설정 방법을 소개합니다.

1. JDBC Sender 채널의 타임아웃 파라미터

1.1 taskTimeout (JDBC 폴링 작업 최대 실행 시간 설정)

taskTimeout이란?

taskTimeoutJDBC Sender 채널에서 실행되는 폴링 작업이 최대 몇 초 동안 실행될 수 있는지를 설정하는 값입니다. 설정된 시간이 초과되면 폴링 작업이 강제로 중단됩니다.

기본값 및 설정 방법

  • 기본값: 0 (무제한 대기, 반드시 0보다 큰 값 설정 필요)
  • 단위: 초 (seconds)
  • 설정 위치: SAP PI/PO > JDBC Sender 채널 > Advanced 탭 > Task Timeout (secs)

설정 예시

  • taskTimeout = 300 설정 시, 쿼리는 최대 5분(300초) 동안 실행되며, 이를 초과하면 강제로 종료됩니다.
  • 설정된 시간이 초과되면 재시도(retry interval) 설정에 따라 다시 실행됩니다.

taskTimeout 설정이 필요한 이유

  • 시스템 리소스 보호: DB 쿼리가 너무 오래 실행되면 서버 리소스가 낭비될 수 있음.
  • 네트워크 문제 대응: DB 성능 저하 또는 네트워크 장애 발생 시 무한 대기를 방지함.
  • 중복 실행 방지: 폴링 주기보다 긴 타임아웃을 설정하면 불필요한 중복 실행을 방지할 수 있음.

설정 시 주의점

  • 폴링 주기보다 긴 taskTimeout 설정 시 중복 실행 방지 가능.
  • 너무 짧은 설정 값은 정상적인 데이터 조회를 방해할 수 있음.
  • 대량 데이터 조회 시 너무 짧은 taskTimeout은 데이터 조회가 완료되기 전에 중단될 수 있음.

1.2 syncTimeout (JDBC 응답 대기 시간 설정)

syncTimeout이란?

syncTimeoutJDBC Sender 채널에서 SQL 쿼리를 실행한 후 응답을 기다리는 최대 시간을 설정하는 값입니다. 설정된 시간이 초과되면 Synchronous timeout exceeded 오류가 발생할 수 있습니다.

기본값 및 설정 방법

  • 기본값: 0 (무제한 대기)
  • 단위: 밀리초 (ms)
  • 설정 위치: SAP PI/PO > JDBC Sender 채널 > Advanced 탭 > Sync Timeout (ms)
  • CallSapAdapter 모듈에서 해당 매개변수를 추가하여 설정 가능

설정 예시

  • syncTimeout = 30,000 설정 시, JDBC 채널은 응답을 최대 30초(30,000ms)까지 대기 후 타임아웃 발생.

taskTimeout과 syncTimeout의 차이점

파라미터기능

syncTimeout DB 응답을 기다리는 최대 시간 (ms)
taskTimeout 폴링 작업 실행 시간 제한 (초)

syncTimeout 설정이 필요한 이유

  • DB 응답이 느릴 경우 일정 시간 내 응답이 없으면 불필요한 리소스 소모를 방지함.
  • 네트워크 문제 대응: 쿼리 응답이 늦어질 경우 지연을 최소화.
  • SAP PI/PO 시스템 안정성 향상: 무제한 대기는 불필요한 시스템 리소스 사용을 초래할 수 있음.

설정 시 주의점

  • 너무 짧은 설정 값은 정상적인 쿼리 실행에도 타임아웃 오류를 발생시킬 수 있음.
  • 너무 긴 설정 값은 JDBC 채널이 불필요하게 대기하여 다른 메시지 처리에 영향을 미칠 수 있음.

2. 데이터베이스(DB)별 타임아웃 파라미터

2.1 Oracle 관련 파라미터

  • oracle.net.CONNECT_TIMEOUT → DB 접속 시 허용하는 최대 연결 시간 설정.
  • oracle.jdbc.ReadTimeout → DB에서 데이터를 주고받을 때 소요되는 최대 시간 설정.

2.2 MSSQL 관련 파라미터

  • loginTimeout → DB 연결 시 최대 허용 시간을 초 단위로 설정.
  • lockTimeout → DB 잠금 대기 시간을 초 단위로 설정.
  • sqlquerytimeout → SQL 실행 시 JDBC 드라이버가 대기하는 최대 시간을 설정.
  • URL 접속 예시: DatabaseName=[서비스명];socketTimeout=값

2.3 DB2 관련 설정

  • 1385571-PI JDBC adapter: Connecting a DB2 for IBM i 문서를 참고하여 설정 가능.

2.4 MySQL 관련 설정

  • URL 접속 예시: jdbc:mysql://xxx.xx.xxx.xxx:3306/database?connectTimeout=60000&socketTimeout=60000

2.5 PostgreSQL 관련 설정

  • URL 접속 예시: jdbc:postgresql://localhost:5432/postgres?options=-c%20search_path=test,public,pg_catalog%20-c%20statement_timeout=90000
  • PostgreSQL 공식 문서 참고.

3. SOAP 어댑터의 타임아웃 관련 설정

  • XMBWS.Timeout → SOAP 어댑터에서 타임아웃 관련 설정 값.
  • XI.Timeout → XISOAPAdapterBean 모듈 사용 시 적용.
  • syncTimeout → CallSapAdapter 사용 시 적용.
  • XMBWS.Timeout → XISOAPAdapterBean 모듈이 타겟 시스템에서 응답을 기다리는 시간 설정.

4. 결론 및 최적 설정 가이드

  • taskTimeoutsyncTimeout을 환경에 맞게 조정하여 SAP PI/PO의 JDBC 연계 성능을 최적화할 것.
  • DB별 설정 값을 조정하여 응답 속도를 개선하고 시스템 리소스를 보호할 것.
  • SOAP 어댑터 사용 시 XMBWS.Timeout 및 관련 타임아웃 값을 설정하여 안정성을 높일 것.

🔎 관련 자료

위 내용을 기반으로 SAP PI/PO의 JDBC 타임아웃을 적절히 설정하면 시스템의 안정성을 높이고 성능을 최적화할 수 있습니다.

반응형