1. Thread Management 관련 명령어

Thread Management 관련 명령어의 목록은 다음과 같다.

명령어 설명

interrupt-thread

서블릿 또는 EJB RMI Thread에 인터럽트 시그널을 전송한다.

modify-service-thread-pool

동적으로 특정 서버의 특정 서비스의 전용 Thread Pool을 변경한다.

modify-system-thread-pool

동적으로 특정 서버의 System Thread Pool을 변경한다.

print-stack-trace

Servlet Thread 또는 EJB RMI Thread의 Stack Trace를 출력한다.

show-service-thread-pool

System Thread Pool에서 특정 서비스에 할당된 Thread의 정보를 조회한다.

show-system-thread-pool

System Thread Pool의 정보를 조회한다.

thread-info

요청을 처리하는 Servlet Thread와 EJB RMI Thread의 정보를 조회한다.

1.1. interrupt-thread

서블릿 또는 EJB RMI Thread에 인터럽트 시그널을 전송한다. Thread에 인터럽트 시그널을 보냈을 때의 결과에 대한 자세한 설명은 JEUS Server 안내서의 Thread 모니터링 및 제어를 참고한다.

이 기능은 인터럽트 신호만 보내는 것이므로 그 Thread가 반드시 동작을 멈춘다고 보장할 수 없다.

  • alias

    interruptthread, interrupt, intthread

  • 사용법

    interrupt-thread -server <server-name>
                        [<thread-id> | -wc <web-connection-name> | -ctx <web-context-name>]
                        [-svg <Service Group Name>]
  • 파라미터

    파라미터 설명

    -server <server-name>

    서버의 이름이다.

    <thread-id> | -wc <web-connection-name> | -ctx <web-context-name>

    • <thread-id> : 시그널을 전송할 Thread의 ID이다.

    • -wc : interrupt할 thread pool이 Web-Connection 레벨의 thread pool일 때, Web-Connection name을 인자로 설정한다.

    • -ctx <web-context-name> : interrupt할 thread pool이 Context 레벨의 thread pool일 때, context name을 인자로 설정한다.

    -svg <Service Group Name>

    Context 레벨의 Thread Pool 이름이다. -ctx 옵션이 설정되었을 경우만 옵션을 줄 수 있다. -svg 옵션이 없을 경우 모든 Context 레벨의 Thread Pool을 interrupt한다.

  • 예제

    [MASTER]domain1.adminServer>interrupt-thread -server server1 50
    Sent an interrupt hint signal to the thread [tid=50] on the server server1.

1.2. modify-service-thread-pool

동적으로 서비스의 전용 Thread Pool을 변경한다. 현재 통합 설정을 사용하고 있는 Naming Server, Scheduler, Transaction Thread Pool만 이 명령어로 변경 가능하다. 변경할 설정을 입력하지 않으면 현재 설정을 조회한다.

  • alias

    modify-svctp, modifysvctp, svctpconfig, svctpconf

  • 사용법

    modify-service-thread-pool -service <service name>
                       <server-name>
                       [-min <min>]
                       [-max <max>]
                       [-k,--keepalivetime <keep-alive-time>]
                       [-q,--queuesize <queue-size>]
                       [-m,--maxstuckthreadtime <max-stuck-thread-time>]
                       [-a,--actiononstuckthread <action-on-stuck-thread>]
                       [-stcp,--stuckthreadcheckperiod <stuck-thread-check-period>]
                       [-f,--forceLock]
                       [-detail]
  • 파라미터

    파라미터 설명

    -service <service name>

    System Thread Pool을 사용하는 서비스의 이름이다.

    <service name>에 다음 중에 하나를 선택한다.

    • transaction

    • scheduler

    • namingserver

    <server-name>

    서버의 이름이다.

    [-min <min>]

    [동적 변경] Thread Pool의 최소 Thread 개수이다.

    [-max <max>]

    [동적 변경] Thread Pool의 최대 Thread 개수이다.

    [-k,--keepalivetime <keep-alive-time>]

    [동적 변경] 최소 Thread 개수를 초과하는 경우 입력한 시간 이상 idle 상태인 Thread는 삭제한다.

    [-q,--queuesize <queue-size>]

    실행 대기하는 worker의 최대 개수이다.

    [-m,--maxstuckthreadtime <max-stuck-thread-time>]

    [동적 변경] 입력한 시간 이상으로 Thread가 수행되고 있으면 STUCK 상태라고 판단한다.

    [-a,--actiononstuckthread <action-on-stuck-thread>]

    [동적 변경] STUCK 상태일 경우의 처리 방법이다.

    <action-on-stuck-thread>에 다음 중에 하나를 설정한다.

    • IgnoreAndReplace

    • Interrupt

    • None

    [-stcp,--stuckthreadcheckperiod <stuck-thread-check-period>]

    [동적 변경] Thread들이 STUCK 상태임을 확인하는 주기를 설정한다. (단위: ms)

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    동적 변경 결과에 대한 상세한 정보가 출력된다.

  • 예제

    88% [MASTER]domain1.adminServer>modify-service-thread-pool server1 -service transaction -min 10 -max 20 
    Successfully performed the MODIFY operation for The transaction thread pool of the
    server (server1)., but all changes were non-dynamic. They will be applied after
    restarting.
    Check the results using "show-service-thread-pool server1 -service transaction or
    modify-service-thread-pool server1 -service transaction"

1.3. modify-system-thread-pool

동적으로 System Thread Pool을 변경한다. System Thread Pool을 사용하고 있는 서비스들의 할당된 Thread 개수도 설정할 수 있다.

  • alias

    modify-systp, modifysystp, systpconfig, systpconf

  • 사용법

    modify-system-thread-pool <server-name>
                      [-min <min>]
                      [-max <max>]
                      [-k,--keepalivetime <keep-alive-time>]
                      [-q,--queuesize <queue-size>]
                      [-m,--maxstuckthreadtime <max-stuck-thread-time>]
                      [-a,--actiononstuckthread <action-on-stuck-thread>]
                      [-stcp,--stuckthreadcheckperiod <stuck-thread-check-period>]
                      [-service <service-name>]
                      [-r,--reservednum <reserved-number>]
                      [-f,--forceLock]
                      [-detail]
  • 파라미터

    파라미터 설명

    <server-name>

    서버의 이름이다.

    [-min <min>]

    [동적 변경] Thread Pool의 최소 Thread 개수이다.

    [-max <max>]

    [동적 변경] Thread Pool의 최대 Thread 개수이다.

    [-k,--keepalivetime <keep-alive-time>]

    [동적 변경] 최소 Thread 개수를 초과하는 경우 입력한 시간 이상 idle 상태인 Thread는 삭제한다.

    [-q,--queuesize <queue-size>]

    실행 대기하는 worker의 최대 개수이다.

    [-m,--maxstuckthreadtime <max-stuck-thread-time>]

    [동적 변경] 입력한 시간 이상으로 Thread가 수행되고 있으면 STUCK 상태라고 판단한다.

    [-a,--actiononstuckthread <action-on-stuck-thread>]

    [동적 변경] STUCK 상태일 경우의 처리 방법이다.

    <action-on-stuck-thread>에 다음 중에 하나를 선택한다.

    • IgnoreAndReplace

    • Interrupt

    • None

    [-stcp,--stuckthreadcheckperiod <stuck-thread-check-period>]

    [동적 변경] Thread들이 STUCK 상태임을 확인하는 주기를 설정한다. (단위: ms)

    [-service <service-name>]

    System Thread Pool을 사용하는 서비스의 이름이다.

    <service name>에 다음 중에 하나를 선택한다.

    • transaction

    • scheduler

    • namingserver

    [-r,--reservednum <reserved-number>]

    [동적 변경] System Thread Pool을 사용하는 서비스에 보장되는 최소 Thread 개수이다.

    [-f,--forceLock]

    설정 변경을 강제로 진행하여 반영한다.

    [-detail]

    동적 변경 결과에 대한 상세한 정보가 출력된다.

  • 예제

    85% [MASTER]domain1.adminServer>modify-system-thread-pool server1 -min 10 -max 60
    -service transaction -reservednum 20 -detail
    Successfully performed the MODIFY operation for the system thread pool of the server (server1).
    ================================================================================
    +-----------------------------------------------------------+-------+----------+
    | servers.server.{? name == 'server1' }.systemThreadPool    | MODIFY| ACTIVATED|
    | servers.server.{? name == 'server1' }.tmConfig            | MODIFY| ACTIVATED|
    +-----------------------------------------------------------+-------+----------+
    ================================================================================
    Check the results using "modify-system-thread-pool server1 or show-system-thread -pool server1"
    ------------------details-------------------
    servers.server.{? name == 'server1' }.tmConfig : ACTIVATED
    servers.server.{? name == 'server1' }.tmConfig.pooling : ACTIVATED
    servers.server.{? name == 'server1' }.tmConfig.pooling.shared : ACTIVATED
    servers.server.{? name == 'server1' }.tmConfig.pooling.shared.reservedThreadNum : ACTIVATED
      previous value : 0, edited value : 20, result value : 20
    servers.server.{? name == 'server1' }.systemThreadPool : ACTIVATED
    servers.server.{? name == 'server1' }.systemThreadPool.min : ACTIVATED
      previous value : 0, edited value : 10, result value : 10
    servers.server.{? name == 'server1' }.systemThreadPool.max : ACTIVATED
      previous value : 100, edited value : 60, result value : 60

1.4. print-stack-trace

Servlet Thread 또는 EJB RMI Thread의 Stack Trace를 출력한다.

  • alias

    stacktrace, strace

  • 사용법

    print-stack-trace -server <server-name>
                      [<thread-id> | -wc <web-connection-name> | -ctx <web-context-name>]
                      [-svg <Service Group Name>]
  • 파라미터

    파라미터 설명

    -server <server-name>

    서버의 이름이다.

    <thread-id> | -wc <web-connection-name> | -ctx <web-context-name>

    • <thread-id> : Thread의 ID이다.

    • -wc : Stack Trace를 보여 줄 thread pool이 Web-Connection 레벨의 thread pool일 때, Web-Connection name을 인자로 설정한다.

    • -ctx <web-context-name> : Stack Trace를 보여 줄 thread pool이 Context 레벨의 thread pool일 때, context name을 인자로 설정한다.

    -svg <Service Group Name>

    Context 레벨의 Thread Pool 이름이다. -ctx 옵션이 설정되었을 경우만 옵션을 줄 수 있다. -svg 옵션이 없을 경우 모든 Context 레벨의 Thread Pool의 Stack Thrace를 보여준다.

  • 예제

    [MASTER]domain1.adminServer>print-stack-trace -server server1 50
    servlet thread [tid=50] Stack trace of http1-1 [server1-50] tid=50 java.lang.Thread.State: WAITING
     at sun.misc.Unsafe.park(Native Method)
     at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
     at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
     at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
     at jeus.util.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1291)
     at jeus.servlet.engine.WebThreadPoolExecutor.getTask(WebThreadPoolExecutor.java:68)
     at jeus.util.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:1215)
     at jeus.servlet.engine.WebThreadPoolExecutor$WebRequestWorker.run(WebThreadPoolExecutor.java:332)
     at java.lang.Thread.run(Thread.java:662)

1.5. show-service-thread-pool

특정 서버의 System Thread Pool을 정보를 확인한다.

  • alias

    show-svctp, showsvctp

  • 사용법

    show-service-thread-pool <server-name>
                             -service <service-name>
  • 파라미터

    파라미터 설명

    <server-name>

    서버의 이름이다.

    -service <service-name>

    서비스의 이름이다.

    <service-name>에 다음 중에 하나를 선택한다.

    • transaction

    • scheduler

    • namingserver

  • 예제

    [MASTER]domain1.adminServer>show-service-thread-pool server1 -service transaction 
    Shows the current configuration.
    =====================================================================
    +----------------------------------------------------------+--------+
    | Min                                                      | 10     |
    | Max                                                      | 20     |
    | Keep-Alive Time                                          | 60000  |
    | Queue Size                                               | 4096   |
    | Max Stuck Thread Time                                    | 3600000|
    | Action On Stuck Thread                                   | NONE   |
    | Stuck Thread Check Period                                | 300000 |
    +----------------------------------------------------------+--------+
    =====================================================================

1.6. show-system-thread-pool

특정 서버의 System Thread Pool 정보를 확인한다.

  • alias

    show-systp, showsystp

  • 사용법

    show-system-thread-pool <server-name>
                            [-service <service-name>]
  • 파라미터

    파라미터 설명

    <server-name>

    서버의 이름이다.

    [-service <service-name>]

    서비스의 이름이다.

    <service-name>에 다음 중에 하나를 선택한다.

    • transaction

    • scheduler

    • namingserver

  • 예제

    [MASTER]domain1.adminServer>show-system-thread-pool server1
    Shows the current configuration.
    the system thread pool of the server (server1).
    ======================================================================
    +------------------------------------------------------------+-------+
    | Min                                                        | 10    |
    | Max                                                        | 60    |
    | Keep-Alive Time                                            | 300000|
    | Queue Size                                                 | 4096  |
    | Max Stuck Thread Time                                      | 0     |
    | Action On Stuck Thread                                     | NONE  |
    | Stuck Thread Check Period                                  | 300000|
    | Reserved Threads for the Service transaction               | 0     |
    +------------------------------------------------------------+-------+
    ======================================================================

1.7. thread-info

요청을 처리하는 Servlet Thread와 EJB RMI Thread의 정보 및 그 외의 JEUS Thread Pool들을 조회한다.

Servlet에서는 리스너의 Thread Pool과 각 작업 Thread(Worker Thread)에 대한 정보를 조회하며, EJB에서는 EJB 리모트 요청을 처리하는 EJB RMI Thread의 정보를 출력한다. 서버에서는 기본적으로 서버 Thread Pool에 대한 정보만을 조회하며 옵션에 따라 모든 Pool 정보를 볼 수도 있다. Batch 애플리케이션의 경우 Thread Pool을 설정했다면, 이 Thread Pool에 대한 정보를 조회하여 출력한다.

  • alias

    threadinfo, ti

  • 사용법

    thread-info -server <server-name>
                [-type <thread-type>]
                [-wc <web-connection-name> | -ctx <web-context-name>]
                [-r,--request | -a,--all]
                [-s <thread-state>]
                [-os,--only-stats]
                [-st,--stacktrace]
  • 파라미터

    파라미터 설명

    -server <server-name>

    서버의 이름이다.

    [-type <thread-type>]

    <thread-type>에 다음 중에 하나를 입력한다.

    • servlet : Servlet Thread

    • ejb : EJB RMI Thread

    • jms : JMS Thread

    • server : Server Thread Pool

    • batch : Batch 애플리케이션에서 사용되는 Thread Pool

    이외에도 -ctx 옵션이 지정된 경우 다음의 값을 입력한다.

    • context : Context Thread Pool

    • webasync : Servlet 3.0 Async Processing을 위한 Thread Pool

    • websocket : WebSocket Container의 Async Send를 위한 Thread Pool

    [-wc <web-connection-name> | -ctx <context-name>]

    특정 웹 커넥션 또는 웹 컨텍스트를 지정한다. 웹 커넥션일 경우에는, 웹 커넥션의 Thread Pool 정보를 출력하고, 웹 컨텍스트일 경우에는 원하는 스레드 풀을 지정할 수 있고, 옵션이 없을 경우에는 Context, WebAsync, WebSocket Thread Pool 정보를 전부 출력한다.

    [-r,--request ]

    Servlet Thread의 요청 정보만을 확인한다.

    Servlet Thread에 대해서만 유효하다.

    [ -a,--all]

    Servlet에서는 Servlet Thread의 모든 정보를 확인하며 서버에서는 JEUS 내부적인 모든 pool의 정보 확인을 의미한다.

    [-s <thread-state>]

    특정 상태의 Thread만 조회하는 경우 그 상태를 입력한다.

    • active

    • idle

    • blocked

    • reconn

    [-os,--only-stats]

    Servlet에서는 각 리스너별 통계 정보만을 출력한다. 서버에서는 pool의 통계 정보만을 출력한다.

    [-st,--stacktrace]

    서버에서 조회한 Pool들에 속한 모든 Active Threads(실제 task를 부여받고 수행 중인 Thread)의 trace를 조회한다. 서버에서만 유효하다.

  • 예제

    [MASTER]domain1.adminServer>thread-info -server server1
    
    Thread information for the server [server1]
    There are no EJB RMI threads for the server [server1].
    There is no batch thread pool in server [server1].
    
    =============================================================
    The web engine threads for 'ADMIN-HTTP'.
    
    +----+------------------------------+--------+---------+----+
    | tid|             name             |  state | elapsed | uri|
    +----+------------------------------+--------+---------+----+
    | 45 | ADMIN-HTTP-w00               | waiting| 48521870|    |
    +----+------------------------------+--------+---------+----+
    
    elsapsed: Elapsed time (ms)
    =============================================================
    
    ===================================================================
    Thread statistics for the 'ADMIN-HTTP'.
    
    +---------------------------+------+-------+-----+--------+-------+
    |                           | total| active| idle| blocked| reconn|
    +---------------------------+------+-------+-----+--------+-------+
    | The number of threads.    |    1 |     0 |   1 |      0 |     0 |
    +---------------------------+------+-------+-----+--------+-------+
    
    total = active + idle, reconn: reconnecting
    ===================================================================
    
    =====================================================
    The web engine threads for 'http1'.
    
    +------+--------------------+--------+---------+----+
    |  tid |        name        |  state | elapsed | uri|
    +------+--------------------+--------+---------+----+
    |   46 | http1-w00          | waiting| 48521873|    |
    |   47 | http1-w01          | waiting| 48521868|    |
    |   48 | http1-w02          | waiting| 48521868|    |
    |   49 | http1-w03          | waiting| 48521868|    |
    |   51 | http1-w05          | waiting| 48521862|    |
    |   52 | http1-w06          | waiting| 48521858|    |
    |   53 | http1-w07          | waiting| 48521858|    |
    |   54 | http1-w08          | waiting| 48521857|    |
    |   55 | http1-w09          | waiting| 48521857|    |
    | 21203| http1-w10          | waiting|   37629 |    |
    +------+--------------------+--------+---------+----+
    
    elsapsed: Elapsed time (ms)
    =====================================================
    
    ===================================================================
    Thread statistics for the 'http1'.
    
    +---------------------------+------+-------+-----+--------+-------+
    |                           | total| active| idle| blocked| reconn|
    +---------------------------+------+-------+-----+--------+-------+
    | The number of threads.    |   10 |     0 |  10 |      0 |     0 |
    +---------------------------+------+-------+-----+--------+-------+
    
    total = active + idle, reconn: reconnecting
    ===================================================================
    
    ======================================================================
    The threads for the 'threadpool.System' thread pool.
    
    +-----+------------------------------+---------------+---------------+
    | tid |             name             |  thread state | active thread |
    +-----+------------------------------+---------------+---------------+
    |  93 | threadpool.System-2          | TIMED_WAITING | false         |
    |  92 | threadpool.System-1          | TIMED_WAITING | false         |
    |  94 | JMXMP [adminServer-94]       | RUNNABLE      | true          |
    +-----+------------------------------+---------------+---------------+
    ======================================================================
    
    ================================================================================
    The statistics for the 'threadpool.System' thread pool.
    
    +-----------+-----------+-----------+-----------+----------+-------------------+
    | pool name |  minimum  |  maximum  |  current  |   work   |   remaining work  |
    |           | pool size | pool size | pool size |queue size|    queue size     |
    +-----------+-----------+-----------+-----------+----------+-------------------+
    | threadpool|         0 |       100 |         3 |     4096 |              4096 |
    |.System    |           |           |           |          |                   |
    +-----------+-----------+-----------+-----------+----------+-------------------+
    ================================================================================
    
    ==========================================================
    The threads for the 'chunk_checkpoint' thread pool.
    
    +-----+------+--------------+----------------------------+
    | tid | name | thread state |        active thread       |
    +-----+------+--------------+----------------------------+
    (No data available)
    ==========================================================
    
    ================================================================================
    The statistics for the 'chunk_checkpoint' thread pool.
    
    +-----------+-----------+-----------+-----------+----------+-------------------+
    | pool name |  minimum  |  maximum  |  current  |   work   |   remaining work  |
    |           | pool size | pool size | pool size |queue size|    queue size     |
    +-----------+-----------+-----------+-----------+----------+-------------------+
    | chunk_che |         0 |        10 |         0 |     4096 |              4096 |
    |ckpoint    |           |           |           |          |                   |
    +-----------+-----------+-----------+-----------+----------+-------------------+
    ================================================================================