반응형
JDBC 연계를 통해 데이터베이스(DB)와 SAP PI/PO를 연동할 때, 적절한 타임아웃 설정이 중요합니다. 타임아웃을 적절히 설정하지 않으면 시스템 리소스가 낭비되거나 장애가 발생할 수 있습니다. 본 문서에서는 주요 JDBC 타임아웃 파라미터를 정리하고, 각 데이터베이스(DB)별 설정 방법을 소개합니다.
1. JDBC Sender 채널의 타임아웃 파라미터
1.1 taskTimeout (JDBC 폴링 작업 최대 실행 시간 설정)
taskTimeout이란?
taskTimeout은 JDBC 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이란?
syncTimeout은 JDBC 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. 결론 및 최적 설정 가이드
- taskTimeout과 syncTimeout을 환경에 맞게 조정하여 SAP PI/PO의 JDBC 연계 성능을 최적화할 것.
- DB별 설정 값을 조정하여 응답 속도를 개선하고 시스템 리소스를 보호할 것.
- SOAP 어댑터 사용 시 XMBWS.Timeout 및 관련 타임아웃 값을 설정하여 안정성을 높일 것.
🔎 관련 자료
위 내용을 기반으로 SAP PI/PO의 JDBC 타임아웃을 적절히 설정하면 시스템의 안정성을 높이고 성능을 최적화할 수 있습니다.
반응형
'PI_PO' 카테고리의 다른 글
SAP PO REST Adapter HTTP OPTIONS 301 오류 해결법: URL 끝에 슬래시(/)를 붙여야 하는 이유 (0) | 2025.03.29 |
---|---|
SAP SLD 비즈니스 시스템 동기화 방법: PO 서버 간 자동 & 수동 동기화 가이드 (0) | 2025.03.29 |
PostgreSQL Error: Column <대문자 컬럼> does not exist in table <대문자 테이블> 해결 방법 (0) | 2025.03.18 |
SAP Cloud Connector (SCC) HA(High Availability) 구성 가이드 (0) | 2025.03.17 |
SOAP Sender 채널 강제 중지 방법 및 실행 중단 가능 여부 (0) | 2025.03.16 |