# 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 에서 서비스의 요청와 응답이 가장 중요한 프로세스 중 하나 이다.