Batch 스레드 풀 환경설정

본 장에서는 JEUS에서 Jakarta Batch에서 정의한 작업이 실행될 스레드 풀을 설정하는 방식에 대해서 기술한다.

1. 개요

스레드 풀은 Web, EJB의 DD에 설정하거나 그것을 포괄하는 Application DD에 설정할 수 있다.

일반적인 경우에는 Web에만(또는 EJB에만) 설정하거나 애플리케이션에만 batch-thread-pool을 설정하여 우선순위를 따질 것 없이 명세한 batch-thread-pool 정보를 기반으로 동작한다.

JEUS는 Web DD와 Application DD에 스레드 풀 설정이 모두 존재하거나 EJB DD, Application DD가 같이 존재하는 경우 Web DD(또는 EJB DD)의 스레드 풀 설정을 기반으로 설정된다.

2. DD 설정

DD에 batch-thread-pool에 대한 설정을 하지 않는 경우 기본값으로 설정된 스레드 풀에서 작업이 진행된다.

다음은 스레드 풀을 설정하는 항목에 대한 설명이다.

항목 설명

min

정의한 작업을 실행될 스레드 풀에서 관리하는 스레드 수의 최솟값이다.

(기본값: 0)

max

정의한 작업을 실행될 스레드 풀에서 관리하는 스레드 수의 최댓값이다.

(기본값: 0)

keep-alive-time

정의한 작업을 실행될 스레드 풀에서 관리하는 스레드의 수가 Max 이하이면서 Min 이상인 경우 설정된 시간 동안 아무 작업을 수행하고 있지 않은 스레드는 자동적으로 스레드 풀에서 제거된다.

스레드의 수가 0이면 제거하지 않는다. (기본값: 60000, 단위: ms)

queue-size

스레드 풀에서 정의한 작업들이 저장될 Queue의 크기를 지정한다.

(기본값: 4096)

DD에서 스레드 풀에 대한 튜닝을 할 경우 DD 간의 우선순위에 따라 스레드 풀이 설정된다. 본 절에서는 각 DD별 설정 방법에 대해서 설명한다.

2.1. 컴포넌트 DD 설정

컴포넌트는 Servlet이나 EJB 등을 의미한다. 스레드 풀 설정들 간에 경쟁을 해야 할 경우 가장 높은 우선순위를 가지고 있다. jeus-web-dd.xml과 jeus-ejb-dd.xml에 설정한다.

다음은 /WEB-INF/jeus-web-dd.xml에 batch-thread-pool을 설정한 예이다.

컴포넌트 DD 설정 : <jeus-web-dd.xml>
<jeus-web-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="8.0">
    <batch-thread-pool>
        <min>10</min>
        <max>20</max>
        <keep-alive-time>60000</keep-alive-time>
        <queue-size>4096</queue-size>
    </batch-thread-pool>
</jeus-web-dd>

다음은 /META-INF/jeus-ejb-dd.xml에 batch-thread-pool을 설정한 예이다.

컴포넌트 DD 설정 : <jeus-ejb-dd.xml>
<jeus-ejb-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="8.0">
    <batch-thread-pool>
        <min>10</min>
        <max>20</max>
        <keep-alive-time>60000</keep-alive-time>
        <queue-size>4096</queue-size>
    </batch-thread-pool>
</jeus-ejb-dd>

2.2. Application DD 설정

다음은 /META-INF/jeus-application-dd.xml에 batch-thread-pool을 설정한 예이다.

Application DD 설정 : <jeus-application-dd.xml>
<application xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="8.0">
    <batch-thread-pool>
        <min>10</min>
        <max>20</max>
        <keep-alive-time>60000</keep-alive-time>
        <queue-size>4096</queue-size>
    </batch-thread-pool>
</application>

3. 로깅

Jakarta Batch의 로거는 JEUS 로거를 사용하지 않는다. 따라서 로거 설정도 JEUS 로거 설정으로는 동작하지 않는다. Jakarta Batch 로거는 Java 로거를 사용한다. 따라서 Jakarta Batch에 대하여 로깅을 하기 위해서는 Java 로거 설정을 해야 한다. 이에 대한 설정은 JEUS Server 안내서의 프로퍼티 설정을 참고한다.

Jakarta Batch 로거는 com.ibm.jbatch 패키지를 기준으로 로그 레벨 설정을 해야 한다.