주식회사 누리아이티

정보자산의 보안강화를 위한 다계층 인증SW (BaroPAM) 전문기업.

▶ Tuxedo/기술자료

GP_CAT:1095: ERROR: tppost failed when posting event .SysClientState, tperrmsg=<TPEBLOCK - blocking condition found>, dropping the message

누리아이티 2011. 11. 2. 11:46

211801.command2!WSH.1050418: GP_CAT:1095: ERROR: tppost failed when posting event .SysClientState, tperrmsg=<TPEBLOCK - blocking condition found>, dropping the message
211801.command2!tmadmin.1368156: GP_CAT:1095: ERROR: tppost failed when posting event .SysClientState, tperrmsg=<TPEBLOCK - blocking condition found>, dropping the message
211801.command2!tmadmin.1368156: GP_CAT:1095: ERROR: tppost failed when posting event .SysClientState, tperrmsg=<TPEBLOCK - blocking condition found>, dropping the message
211801.command2!tmadmin.1369419: GP_CAT:1095: ERROR: tppost failed when posting event .SysClientState, tperrmsg=<TPEBLOCK - blocking condition found>, dropping the message
 
위 메시지는 PC(Tuxedo Workstation Client)에서 비동기식(tpacall)으로 서비스를 동시에 호출할 수 있는 Handle이 50개인데, 50개를 초과하여 비동기식으로 호출하는 서비스에 대하여 Non-blocking 모드에서 Blocking 모드로 바뀌면서 발생한 오류입니다.
 
이런 경우 동기식(tpcall)으로 호출하는 서비스는 정상적으로 서비스 되지만 비동기식으로 호출하는서비스는 정상적으로 수행되지 않고 오류를 발생시킵니다.
 
위와 같은 메시지가 발생할 경우 고객의 Tuxedo 구성 환경을 보면 Event가 발생하면 Event에 대한 Action을 수행하도록 하는 Utility인 Event Broker를 사용하여 더 가중시키는 현상이 발생하였습니다.
 
- ubbconfig 
      :
*SERVERS
      :
TMUSREVT          SRVGRP="GRP_EVT" SRVID=10
   CLOPT="-A -r"
 
TMUSREVT          SRVGRP="F2_GRP_EVT" SRVID=11
   CLOPT="-A -r -- -S -f /tuxedo/app/bin/tmusrevt_fire2.dat"
 
TMSYSEVT          SRVGRP="GRP_SYS_EVT" SRVID=20
   CLOPT="-A -r "
 
TMSYSEVT  SRVGRP="F2_GRP_SYS_EVT" SRVID=21
   CLOPT="-A -r -- -S -f /tuxedo/app/bin/tmsysevt_fire2.dat"
        :
- tmusrevt_fire2.dat
TA_CLASS        T_EVENT_USERLOG
TA_EVENT_EXPR   \\.Sys.*
TA_EVENT_FILTER TA_EVENT_SEVERITY=='ERROR'||TA_EVENT_SEVERITY=='WARN'
TA_USERLOG      %TA_EVENT_DESCRIPTION
 
Event Broker는 Tuxedo 내부에 미리 정의된 Event인 System Event와 User가 정의하여 사용하는 Event인 User Event로 구분합니다.
 
현재 고객은 System Event와 User Event 둘 다 사용하고 있는데 Event Broker는 Event가 발생할 경우 자발적인 메시지를 비동기식으로 PC(Tuxedo Workstation Client)에 전달을 합니다. 그런데, 앞에서 언급했듯이 비동기식 호출은 동시에 50의 Handle을 사용할 수 있는데, 이미 50개의 Handle을 사용하여 TPEBLOCK 오류가 발생하고 있는데, 거기에 Event Broker를 사용하여 더 가중시키는 현상이 발생한 것입니다.
 
이런 오류가 발생한 원인은 너무 많은 비동기식 서비스를 호출한 경우와 비동기식으로 호출한 서비스의 수행시간이 오래 걸리는 경우인데 비동기식으로 호출한 서비스의 수행시간을 단축시켜 50개의 Handle을 초과하지 않도록 해야 합니다.
 
또한, 이런 오류가 발생한 경우 PC(Tuxedo Workstation Client)에서 서비스 호출을 잠시 못하게 하여 이미 호출된 비동기식 서비스를 수행하여 Handle의 여유분을 확보해야 합니다.
 
그래서 WSL을 다음과 같이 내렸다 올려 주면 비동기식 서비스 호출을 줄여 비동기식 호출로 인한 Handle의 여유분을 확보할 수 있습니다.
 
- WSL 종료
> tmshutdown -s WSL
 
- WSL 기동 
> tmboot -s WSL
 
Event Broker는 예전에는 흔히 사용하였는데 Tuxedo BBL에 부하를 가중시키는 현상으로 인하여 특별한 경우가 아니면 현재는 가급적 사용하지 않는 것을 권고 합니다.

'▶ Tuxedo > 기술자료' 카테고리의 다른 글

Application logging  (0) 2011.11.07
Tuxedo 운영 중 발생빈도가 높은 에러 및 조치사항  (0) 2011.11.04
Tuxedo start시 LIBTUX_CAT:1370/1367 메시지  (0) 2011.10.31
CMDTUX_CAT:417 오류  (0) 2011.10.31
TPEBADDESC 오류  (0) 2011.10.31