MIDDLEWARE:Tuxedo-Oracle connection과 관련된 정보
원본 출처 : http://sh.hanarotel.co.kr/~ggola/telecom/oratips/middle/tuxedo.htm
-- 다음 테스트를 위해 힘써 주신 Cyberlogitec Middleware Team의 성수경님에게 감사를 드립니다. --
Middleware Tuxedo를 사용하는 환경에서 Application 과 Oracle Server과의 connect 과정을 살펴보고 제기된 문제를 추적한다.
문제 발생 : 특별한 이유로 인해 long time query를 하는 tuxedo service를 call한 후 data return 전에 비정상 종료시 해당 Tuxedo Server의 waiting이 매우 길어지는 현상이 나타나 service 사용이 어렵게 됨.
[b]테스트 환경 : [/b]
DB Server : AIX 장비 A (Oracle 7.3.4.3)
TUXEDO : AIX 장비 B (Tuxedo 6.4)
Client PC : PB Program (PB 5.0)
테스트 과정 :
Tuxedo Server를 띄우고 클라이언트에서 문제가 발생한 Service를 call하는데 Time-out을 1분으로 해 놓은 경우 다음과 같은 절차에 따라 Transaction이 처리된다.
1. Tuxedo Server를 띄우면 각 턱시도 서버당 2개의 Oracle Session이 생성되고 Oracle은 턱시도 서버 1개당 1개의 Server Process를 당한다.
2. 클라이언트에서 Service Call을 하면 WSL이 클라이언트 정보를 불리틴보드에 넣고 WSH가 불리틴보드를 참조하여 called service와 서버를 참조하여 적절한 턱시도 서버를 할당하여 (특정 서비스가 여러 개 존재한다면 그렇지만 서비스가 1개밖에 없다면 지체없이 해당 턱시도 서버가 연결된다) 할당된 Server의 지정된 서비스를 Tuxedo Queue에 쌓는다. 그러면 요청된 작업을 처리하기 위해 오라클에 새로운 session이 생성된다. 이 작업의 결과처리 즉, commit 이나 rollback은 해당 서버가 맺고 있는 최초 턱시도 서버가 생성될 때 맺게되는 두개의 Session이 처리한다.
3. 지정된 서비스 작업을 수행한 후 1분이 지나 Time out이 발생하면 그 트랜잭션이 종료되었음을 BBL이 감지하여 서비스를 종료한다.
4. 문제는 그 상태에서 Tuxedo Queue에 있던 서비스가 Queue에서 빠져나가는데 무려 5분이 걸린다는 점이다. 또한 그렇게 되면 해당 턱시도 서버는 종료된 서비스가 Queue에서 빠질때 까지 다른 요청작업은 수행을 못하고 Queue에 대기 시킴으로써 종료된 작업이 Queue에서 나가길 기다린다. 그러므로 그러한 작업의 결과로 발생한 상황을 기다리지 못하고 계속 작업을 돌리면 턱시도 Queue에는 계속 쌓이게 된다.
5. 그 상태에서 5분정도가 지나면 Queue에서 해당 작업이 빠지고 해당 작업이 맺고 있던 오라클 session status는 killed 상태로 바뀌고 약 1분후 session이 종료되어 사라진다.
6. 또한 time out setting 없이 비정상 종료(예를 들어 ctrl + atl + del key 사용등)를 시키거나 당하더라도 위와 똑 같은 절차를 거쳐 해당 작업이 깨끗이 clear 되는데 총 6분이 걸린다는 것이 확인되었다.
테스트 결과 : 그간에 나타났던 문제의 원인은 이러한 Tuxedo Queue에서의 Waiting의 문제가 반복됨으로써 해당 턱시도 서버에 대한사용이 불가능해 지는 문제로 나타났다.그 6분이라는 시간의 원인제공이 턱시도 인지 오라클인지는 양사의 주장이 다음과 같이 엇갈리고 있다. 턱시도 입장에서는 오라클의 XA Library를 사용함으로 자신들의 문제가 아닌 것으로 오라클 입장에선 오라클에 생성된session은 session을 맺은 쪽에서 close 정보를 받아야만 session을 제때에 종료 시킬 수 있다는 주장을 하는바 좀 더 자세한 내역은 아직 알 수가 없다. 다만, 턱시도 주장으론 오라클 8i에서는 바로 종료가 된다는 보고가 있다.
Tuxedo Service Call Simulation (Client와의 접속이 완료되면 그 이후 모든 data는 WSH와 통신을 통해 주고받는다)
|