1. Thread Management 관련 명령어
Thread Management 관련 명령어의 목록은 다음과 같다.
명령어 | 설명 |
---|---|
서블릿 또는 EJB RMI Thread에 인터럽트 시그널을 전송한다. |
|
동적으로 특정 서버의 특정 서비스의 전용 Thread Pool을 변경한다. |
|
동적으로 특정 서버의 System Thread Pool을 변경한다. |
|
Servlet Thread 또는 EJB RMI Thread의 Stack Trace를 출력한다. |
|
System Thread Pool에서 특정 서비스에 할당된 Thread의 정보를 조회한다. |
|
System Thread Pool의 정보를 조회한다. |
|
요청을 처리하는 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 | | | | | | +-----------+-----------+-----------+-----------+----------+-------------------+ ================================================================================