Tmax 6

본 장에서는 Tmax 6 릴리즈에서 추가된 새로운 기능과 변경된 기능에 대해 간략히 설명한다.

1. 신규 기능

1.1. Tmax Deployment 기능 추가

서버 애플리케이션, 리소스 파일, 환경설정 파일 등을 배포하고 기동하는 것을 관리하는 프레임워크가 도입으로 이력과 버전들을 관리 기능 제공한다.

1.2. TmaxGrid 기능 추가

TmaxGrid는 멀티 노드 환경에서 in-memory 데이터를 동기화시키는데 목적두며, 다수의 업무 프 로그램에서 이 기능을 이용해서 분산 lock, queue 기능, 공유 설정을 별도의 구현 없이 쉬운 API를 통해서 멀티 노드에서 구현 기능을 제공 한다. 자세한 사용법은 TmaxGrid User Guide를 참고한다.

1.3. Multiple RM에 DB2 지원

Tmax 6부터 Multiple RM에 DB2를 지원한다. 자세한 사용법은 Tmax Application Development Guide를 참고한다.

1.4. 보안 기능 강화 및 유연성 제공

기존 서버간의 암복호화를 할 때 Tmax에서 제공하는 기본 보안 모듈만 사용 가능하였으나, 사용자가 직접 원하는 보안 모듈을 적용할 수 있도록 보안 기능의 유연성을 제공한다. 이전 버전에서는 암복화를 CLH에서 담당 하였으나 이를 분리 CAS에서 수행하도록 분리해서 스레드를 제공하여 암호화 성능이 향상되었다.

1.5. PHP 인터페이스 제공

PHP에서 Tmax 클라이언트의 기능을 사용할 수 있는 확장 모듈을 제공한다. 자세한 사항은 Tmax Programming Guide (4GL)를 확인한다.

2. 기능 개선

2.1. 이름 길이 확장

기존에 설정 값을 15자리까지 사용하던 이름의 길이를 63자리까지 사용할 수 있도록 확장하였다.

  • 세부 설정 값

    Domain Name | Node Name |SVRGROUP |Server Name |Service Name |OWNER |HMSNAME |Gateway Name |RQ Name(62 자리)

2.2. 시간 정밀도 개선

이전 버전의 시간 정밀도는 초 단위였으나 Tmax 6 이후로는 시간 정밀도 밀리세컨드 단위로 변경하였다. SVCTIME, TXTIME, BLOCKTIME 등 환경 설정 관련한 시간 정밀도는 밀리세컨드 단위로 입력을 받는다.

  • 입력 방식

    • Tmax v5.0 이전의 방식과 호환되며, sec.millisec로 설정한다. 예를 들면 10.001, 10이 가능하다. '10.'처럼 소수점 뒤에 숫자가 없으면 CFL 에러가 발생하므로 주의한다.

    • slog, ulog, debug log, svclog 등 로그 관련한 시간 정밀도는 마이크로세컨드 단위로 출력한다.

  • 출력 방식

    • Tmax v5.0 이전의 방식에서 HHMMSS뒤에 소수점과 마이크로세컨드가 붙는다.

      예)

      svr333.1005.143119.511001
    • User API가 추가되었다.

      int tpsetsvcmtimeout(int msec, long flags)
      int tx_set_transaction_mtimeout(TRANSACTION_TIMEOUT timeout)
    • tmadmin의 repeat(r) 명령어의 -i s(초) 옵션의 s가 밀리초로 변경되었다.

2.3. tmboot / tmdown 로깅 메시지 개선

  • tmboot / tmdown 로깅 메시지 개선

    tmboot 또는 tmdown할 때 slog에 아래와 같이 메시지가 출력되도록 기능이 개선되었다(%2 부분에 입력한 인자이다).

    TMM01128 TMBOOT registered, pid = %1 (%2)
    TMM01129 TMDOWN registered, pid = %2 (%2)

    예)

    TMM.3721.112533.526303:(I) TMAX01128 TMBOOT registered, pid = 3733 (tmboot -S svr2 ) [TMM0210]
    TMM.3721.112533.536627:(I) TMAX01128 TMBOOT registered, pid = 3736 (tmboot -n tmax8 -S svr1 ) [TMM0210]
  • 관련 이슈 : IMS 38782

2.4. Tmax Log 메시지 통합

에러 메시지의 가독성 및 용이한 분석을 위해 기존 모든 메시지들의 prefix가 "모듈4자리번호"에서 "TMAX5자리번호"로 변경되었다. 또한 모듈에 관계 없이 'TMAX’를 접두어로 사용한다.

예)

SVR2058 -> TMAX02058
CLH2058 -> TMAX02058

2.5. Debug/Release Binary 통합

기존 디버깅 바이너리를 일반 모듈로 통합하였다. 기존에는 디버깅 바이너리를 적용을 위해서는 디버깅 바이너리 교체 후 엔진을 제기동 해야만 했으나 동적 LOGLEVEL 변경을 통해 실시간으로 디버깅 적용 가능하게 변경하였다.

tmm에 접속하지 않는 일반 모듈(cfl/uncfl/client 등)은 TMAX_ERR_MSG/TMAX_DEBUG/TMAX_LOGLVL의 설정을 해야 한다. TMAX_ERR_MSG=Y일 경우 TMAX_LOGLVL=[DEBUG1~DEBUG4] 레벨에 디버그 로그 생성 로그는 TMAX_DEBUG 설정에 따라 로그 파일이 생성된다.

  • tmm에 접속하는 모듈은 Tmax 환경 파일에 설정한 각 모듈별 디버그 로그를 설정해야 한다.

    TMMLOGLVL CLHLOGLVL TMSLOGLVL LOGLVL GATEWAYLOGLVL별

    내부적인 디버그 로그의 상세 정도를 DEBUG1, DEBUG2, DEBUG3, DEBUG4로 표기한다. (DEBUG4 가 가장 상세함)

    • DEBUG1 : 일반적인 레벨

    • DEBUG2 : 트랜잭션 레벨

    • DEBUG3 : 그 외(주로 네트워크 관련)의 레벨

    • DEBUG4 : 스레드 레벨

2.6. clilib, svrlib에 tmaxoserror 함수 추가

tmaxoserrno 변수를 통해서 TPEOS, TPESYSTEM이 발생하는 경우 OS systemcall을 수행할 때 errno에 대해서 참조할 수 있도록 한다.

2.7. Svcrpt 사용자 로깅 지원

  • SVCLOG_FORMAT 기능추가

    svclog 의 항목을 사용자가 조정할 수 있도록 기능 추가 기존에 출력되던 항목은 변경할 수 없으며 이번에 추가하는 필드만 변경 가능하다. tmadmin api, tip, snmp, webagent에서 추가된 SVCLOG_FORMAT은 참조할 수 없다.

2.8. 도메인 게이트 웨이의 DIRECTION 동적 변경 기능 추가

  • tmadmin의 set 명령어를 통해서 게이트웨이의 direction 항목을 변경 가능하도록 기능이 추가되었다.

     echo set -w gw3 direction 'BIDIR|B | IN|I | OUT|O' | tmadmin -m
  • 관련 이슈 : IMS 43965

2.9. 서버 프로세스들에 대한 기동시각 출력기능 추가

  • 서버 프로세스들에 대한 기동시각 출력기능이 추가되었다.

    • tmadmin api의 아래 구조체에 boot_time 필드 추가(unix time)

         - struct tmadm_spr_stat_body
         - struct tmadm_spr_stat_ex_body
         - struct tmadm_svr_stat_body
           struct {
             int sec;    // unix time second
             int msec;   // millisecond
           } boot_time;
    • TIP server 에 필드키 추가(unix time)

          - TIP_BOOTTIME_SEC
          - TIP_BOOTTIME_MSEC
    • tmadmin의 st -p/st -v에 -b 옵션 추가(local time)

  • 관련 이슈 : IMS 78473

2.10. MSGSIZEWARN, MSGSIZEMAX 옵션 추가

이전 버전에서는 CLH는 1GB가 넘는 단일 메시지가 들어오면 해당 client와의 연결을 종료시키면서 연결을 허용하지 않고 있으며, 이 기능을 확장하여 메시지의 최대 크기를 사용자가 지정할 수 있도록 하는 옵션이 추가되었다.

  • MSGSIZEWARN, MSGSIZEMAX 옵션 추가

    • MSGSIZEWARN

      클라이언트/서버로부터 수신하려는 메시지의 크기(순수한 사용자 데이터 크기) 또는 tpalloc을 통한 버퍼 할당 크기가 지정한 값을 초과하면 SLOG에 warning 메시지를 출력한다. 메시지는 정상적으로 수신하고 처리한다.

      • 단위 : Byte

      • 기본값 : 1,073,741,824(1GB)

      • 지정범위 : 1,024 ~ 1,073,741,824(1GB)

        (W) TMAX02066 client(192.168.51.185) message size(5001) exceeds MSGSIZEWARN(2000), service(TOUPPER) : 3 5013 5001 1342177292 [COM3808]
        (W) TMAX02066 server(svr2:66) message size(5001) exceeds MSGSIZEWARN(2000), service(TOUPPER) : 1003 5023 5001 1342177302 [COM3808]
    • MSGSIZEMAX

      클라이언트, 서버로부터 수신하려는 메시지의 크기(순수한 사용자 데이터 크기) 또는 tpalloc을 통한 버퍼 할당 크기가 지정한 값을 초과하면 SLOG에 error 메시지를 출력한다. 메시지를 무시하고, 해당 채널의 연결을 종료시킨다.

      • 단위 : Byte

      • 기본값 : 1,073,741,824(1GB)

      • 지정범위 : 1,024 ~ 1,073,741,824(1GB)

        (E) TMAX02065 client(192.168.51.185) message size(10001) exceeds MSGSIZEMAX(10000) : 3 10013 10001 1879048204 [COM3807]
    • 관련 모듈

      • CLH : 클라이언트, 서버로부터 들어오는 메시지

      • jeusgw, tmaxgw, tmaxgwnt : 리모트 게이트웨이로부터 들어오는 메시지

      • 다음의 명령으로 MSGSIZEMAX 변경한다.

        set -n <nodename> msx <data size>
  • 관련 이슈 : IMS 38102

2.11. runtime 설정 강화

  • tmadmin 동적 변경 범위 확대

    • 타임아웃과 관련된 항목

    • CHKINT(체크 인터벌) 관련 항목

    • 로그 레벨

  • 용이한 환경 파일 추가를 위해 cfl -a 방식이 변경되었다. 기존 제약 사항은 유지한다. (기존 항목 삭제 불가)

    • 변경전

      cfl -i ori.m -a add.m -o tmchg
    • 변경 후

      cfl -a modify.m -o tmchg

2.12. runtime 로그레벨 변경 강화

tmadmin의 chlog2 명령어를 이용하여 런타임 도중에 로그 레벨을 동적으로 변경할 수 있는 기능이 추가되었다.

변경 가능한 타입은 TMM, CLH, TLM, CAS, RS, SQ, TG, TMS, HMS, RQ, GW, SVG, SVR, CLL 이다.

 $$1 tmaxs1 (tmadm) : chlog2 -t [type_name] [-n name] -l [loglvl]