16.4. 고급 Cryostat 구성
16.4.1. IO 구성
PAXWEB-1255부터 리스너가 사용하는 XNIO 작업자 및 버퍼 풀의 구성을 변경할 수 있습니다. undertow.xml 템플릿에는 일부 IO 관련 매개변수의 기본값을 지정하는 섹션이 있습니다.
<!-- Only "default" worker and buffer-pool are supported and can be used to override the default values used by all listeners buffer-pool: - buffer-size defaults to: - when < 64MB of Xmx: 512 - when < 128MB of Xmx: 1024 - when >= 128MB of Xmx: 16K - 20 - direct-buffers defaults to: - when < 64MB of Xmx: false - when >= 64MB of Xmx: true worker: - io-threads defaults to Math.max(Runtime.getRuntime().availableProcessors(), 2); - task-core-threads and task-max-threads default to io-threads * 8 --> <!-- <subsystem xmlns="urn:jboss:domain:io:3.0"> <buffer-pool name="default" buffer-size="16364" direct-buffers="true" /> <worker name="default" io-threads="8" task-core-threads="64" task-max-threads="64" task-keepalive="60000" /> </subsystem> -->
다음 buffer-pool
매개변수를 지정할 수 있습니다.
buffer-size
- IO 작업에 사용되는 버퍼의 크기를 지정합니다. 지정하지 않으면 사용 가능한 메모리에 따라 크기가 계산됩니다.
direct-buffers
- java.nio.ByteBuffer#allocateDirect 또는 java.nio.ByteBuffer#allocate를 사용해야 하는지 여부를 결정합니다.
다음 작업자
매개변수를 지정할 수 있습니다.
io-threads
- 작업자에 대해 생성할 I/O 스레드 수입니다. 지정하지 않으면 스레드 수가 CPU 수 × 2로 설정됩니다.
task-core-threads
- 코어 작업 스레드 풀의 스레드 수입니다.
task-max-threads
- 작업자 작업 스레드 풀의 최대 스레드 수입니다. 지정하지 않으면 최대 스레드 수가 CPU 수 × 16으로 설정됩니다.
16.4.2. 작업자 IO 구성
Cryostat 스레드 풀과 해당 이름은 서비스별 또는 번들 기준으로 구성할 수 있으므로 Hawtio 콘솔에서 모니터링하고 디버깅을 보다 효율적으로 수행할 수 있습니다.
번들 블루프린트 구성 파일(일반적으로 Maven 프로젝트의 src/main/resources/OSGI-INF/blueprint
디렉터리에 저장됨)에서 다음 예와 같이 workerIOName 및 ThreadPool을 구성할 수 있습니다.
예 16.1. httpu:engine-factory 요소가 workerIOName 및 ThreadPool 구성
<httpu:engine-factory> <httpu:engine port="9001"> <httpu:threadingParameters minThreads="99" maxThreads="777" workerIOThreads="8" workerIOName="WorkerIOTest"/> </httpu:engine> </httpu:engine-factory>
다음의 threadingParameters
를 지정할 수 있습니다.
minThreads
- 작업자 작업 스레드 풀에 대한 "코어" 스레드 수를 지정합니다. 일반적으로 이는 CPU 코어당 최소 10개 이상 높은 수준이어야 합니다.
maxThreads
- 작업자 작업 스레드 풀에 대한 최대 스레드 수를 지정합니다.
다음 작업자
매개변수를 지정할 수 있습니다.
workerIOThreads
- 작업자에 대해 생성할 I/O 스레드 수를 지정합니다. 지정하지 않으면 기본값이 선택됩니다. CPU 코어당 하나의 IO 스레드가 적절한 기본값입니다.
workerIOName
- 작업자의 이름을 지정합니다. 지정하지 않으면 기본 "XNIO-1"이 선택됩니다.