Q1) 실제 jboss에서 처리할때 사용하는 thread 설정은 어떤것?
Q2) curl명령어 수행시 관련있는 쓰레드설정값은 어느부분인지?
Ans)
I/O subsystem의 http-worker에 설정된 값이 이에 해당된다.
task-core-threads가 min값, task-max-threads가 max값
해당 값이 명시되어 있지 않을 경우, default 값은 min=1, max="CPU core 수 * 16"
예시로 CPU Core 수가 4core 라면 max 값이 64
<subsystem xmlns="urn:jboss:domain:io:3.0">
<worker name="default"/>
<worker name="http-worker" task-core-threads="32" task-max-threads="32"/>
<!--<worker name="ajp-worker" task-core-threads="32" task-max-threads="32"/>-->
<buffer-pool name="default"/>
</subsystem>
----------------------------------------------------------------
Q3) 각 서브시스템내의 역할, 쓰레드min,max,default 설정값?
JBoss EAP 7은 Undertow를 기본 웹 컨테이너로 사용한다.
Undertow 내의 모든 리스너들은 I/O subsystem에서 제공하는 worker를 사용한다.
전달받은 standalone.xml 에는 Undertow가 http-worker를 사용하도록 되어있으며,
즉 thread min/max 값은 32/32 로 설정되어 있는 상태이다.
<http-listener name="default" tcp-keep-alive="true" socket-binding="http" worker="http-worker" record-request-start-time="true"
redirect-socket="https" proxy-address-forwarding="true" enable-http2="true"/>
----------------------------------------------------------------
Q4) task-max-threads, short-running-threads, long-running-threads 각각의 의미
해당 thread 값들은 jca subsystem에 설정 되어있습니다. 일반적인 request를 처리하는 상황에서는 직접 사용되지 않는다.
외부 시스템과의 통신이나 트랜잭션을 처리하며, 특정 자원 어댑터(예: JDBC, JMS 등)를 통해 데이터를 주고받을 때 사용된다.
short-running-threads: 짧은 시간 동안 실행되는 작업을 위한 스레드 풀이다. 외부 시스템과의 빠른 요청-응답 작업 처리 등
long-running-threads: 오랜 시간 동안 실행되는 작업을 위한 스레드 풀이다. 장기 트랜잭션이나 복잡한 데이터 처리 작업 처리 등
보내준 config의 값과, 원본 standalone.xml 상에 설정되어 있는 default 값과 일치한다.
해당 값의 수정은 불필요하다 판단되어 그대로 유지하면 된다.
<subsystem xmlns="urn:jboss:domain:jca:5.0">
<archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
<bean-validation enabled="true"/>
<default-workmanager>
<short-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</short-running-threads>
<long-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</long-running-threads>
</default-workmanager>
<cached-connection-manager/>
</subsystem>
추가로, 현재 보내준 설정파일에서 JCA 관련 패키지를 사용하는 곳은 DB Validation check용으로 확인이 됨.
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
----------------------------------------------------------------
Q5) 각 서브시스템의 상관관계?
Q6) thread 설정의 연관관계 설명
I/O와 JCA subsystem의 thread pool 간에 한정 지어서 생각한다면, 상관관계가 따로 있지는 않다고 판단.
JCA는 외부 시스템과의 처리를 위한 thread pool이고, task-max-threads는 사용자 request를 처리하는데 쓰이는 thread-pool.
일반적인 운영 환경에서는 I/O subsystem의 task-core-threads 및 task-max-threads 옵션값만 신경 쓰면 될 것으로 보인다.
==========================================================
'WAS > JBoss&WildFly' 카테고리의 다른 글
| [JBoss EAP 7] mail 솔루션 과의 충돌로 인한 모듈 제거 법 (0) | 2025.11.03 |
|---|---|
| [JBoss EAP 7] character encoding for decoding the URL parameters (0) | 2025.07.08 |
| [JBoss EAP 7] logmanager 관련 기동 이슈 (1) | 2025.06.30 |
| [JBoss EAP 7] unescape code 관련 지원 (0) | 2025.04.29 |
| [JBossEAP 7.4] 데이터소스 현황 체크 용 쉘 (0) | 2024.12.17 |