TroubleShooting

[Tuxedo] TM_SVCTIMEOUT_SIGTERM 파라미터와 tmshutdown -w 옵션이 많이 사용되지 않는 이유

최선을 다하자! 2022. 12. 12. 14:27

# TM_SVCTIMEOUT_SIGTERM 옵션은 SERVICES 섹션에 설정된 SVCTIMEOUT 값(초)에 의존한다.

 

만약

TM_SVCTIMEOUT_SIGTERM=YES이고 

SVCTIMEOUT=10초 

 

로 환경설정이 되어있다면 

 

AP server로 부터 SVCTIMEOUT이 10초동안 발생하게 되면 곧바로 SIGTERM이 사용되어 해당 서비스를 가지고있는 AP server는 terminate되며 restart 된다. (*SERVERS 섹션에서 RESTART=Y로 되어있는 경우에 한함)

 

140642.node1!BBL.9110032.1.0: CMDTUX_CAT:1837: WARN: Server(49414440) processing terminated with SIGTERM after SVCTIMEOUT
140647.node1!BBL.9110032.1.0: LIBTUX_CAT:541: WARN: Server GROUP3/301 terminated
140647.node1!BBL.9110032.1.0: LIBTUX_CAT:557: INFO: Server GROUP3/301 being restarted
140647.node1!simpserv3.20709726.1.0: 12-12-2022: Tuxedo Version 12.2.2.0.0, 64-bit
140647.node1!simpserv3.20709726.1.0: LIBTUX_CAT:262: INFO: Standard main starting
140647.node1!simpserv3.20709726.1.0: LIBTUX_CAT:476: WARN: Server 7/301: client process 47841732: lost message
140647.node1!simpserv3.20709726.1.0: LIBTUX_CAT:477: WARN: SERVICE=TOUPPER    MSG_ID=0    REASON=server died
140647.node1!restartsrv.49414450.1.-2: 12-12-2022: Tuxedo Version 12.2.2.0.0, 64-bit
140647.node1!restartsrv.49414450.1.-2: server GROUP3/301: CMDTUX_CAT:580: INFO: A server process has restarted: 20709726

 

 

 

하지만 ! 

 

서버와 서비스 개발시에

TM_SVCTIMEOUT_SIGTERM은 권장 되지 않는다.

 

물론 

 

SVCTIMEOUT 옵션만을 사용하여 SVCTIMEOUT이 발생하면 무조건 AP server를 kill 시키고 재기동 시킨다. 이건 PID로 kill -9 하는 것과 동일하다.

 

그래서 TM_SVCTIMEOUT_SIGTERM 옵션이 추천된다. 이 옵션은 우선적으로 '안전하게' 서비스를 SIGTERM으로 죽이고 그래도 죽지 않으면 SIGKILL로 죽인다.는 옵션이다.

 

 

하지만 !!

 

TM_SVCTIMEOUT_SIGTERM 파라미터도 권장되지 않는다.

SVCTIMEOUT이 120초라고 할 때 

 

클라이언트가 3초가 걸리는 서비스를 호출했다고 치자,

클라이언트는 최소한의 보장으로써 서비스를 제공 받아야한다. 

 

하지만 TM_SVCTIMEOUT_SIGTERM 파라미터가 설정되어있으면 서비스타임아웃이 일어날 때

곧바로 AP server를  SIGTERM과 SIGKILL을 시킬 수 있다. 그렇다면 클라이언트는 서비스를 보장받지 못할 것이다.

 

반면에 TM_SVCTIMEOUT_SIGTERM 파라미터가 설정되어있지 않다면 

클라이언트는 3초가 걸리는 서비스를 120초 안에 어떻게든 보장 받을 것이다. 동일한 서비스를 가진 AP server가 다시 기동될테니까... 

 

그리고 3초가 걸리는 서비스를 호출하였을 때 

tmshutdown -w 2 -i 301 로 tmshutdown을 한다면?

 

-w  2 옵션은 서비스를 2초 기다렸다가 AP server를 shutdown 시킨다는 말이다.

만약 3초가 걸리는 서비스를 -w 2 때문에 reply하지 못했다면 ?

 

최소한의 서비스의 보장이 이루어지지 않았기 때문에 아주 큰 문제가 발생할 것으로 예상한다...

 

그렇기 때문에 -w 옵션과 TM_SVCTIMEOUT_SIGTERM 옵션을 tmshutdown 커맨드를 사용할 때 함께 사용하지 않는 것이다.

 

 

아무튼 Tuxedo 에서 서비스의 요청와 응답이 가장 중요한 프로세스 중 하나 이다.