16.4. 高级 Undertow 配置
16.4.1. IO 配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
自 PAXWEB-1255 起,可以更改监听器使用的 XNIO worker 和缓冲池的配置。在 undertow.xml 模板中有一个指定某些与 IO 相关参数的默认值的部分:
可以指定以下 buffer-pool
参数:
buffer-size
- 指定用于 IO 操作的缓冲区的大小。如果没有指定,大小会根据可用内存计算。
direct-buffers
- 确定应使用 java.nio.ByteBuffer#allocateDirect 或 java.nio.ByteBuffer#allocate。
可指定以下 worker
参数:
io-threads
- 为 worker 创建的 I/O 线程数量。如果没有指定,线程数量将设置为 CPU 的数量 2。
task-core-threads
- 核心任务线程池的线程数量。
task-max-threads
- worker 任务线程池的最大线程数量。如果没有指定,则最大线程数被设置为 CPU 340 16 的数量。
16.4.2. worker IO 配置 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
可以在每个服务或捆绑包的基础上配置 Undertow 线程池及其名称,这有助于从 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>
<httpu:engine-factory>
<httpu:engine port="9001">
<httpu:threadingParameters minThreads="99" maxThreads="777" workerIOThreads="8" workerIOName="WorkerIOTest"/>
</httpu:engine>
</httpu:engine-factory>
可指定 以下线程参数
:
minThreads
- 指定 worker 任务线程池的"core"线程数量。通常,每个 CPU 内核至少应有 10 个。
最大线程数
- 指定 worker 任务线程池的最大线程数量。
可指定以下 worker
参数:
workerIOThreads
- 指定为 worker 创建的 I/O 线程数量。若不指定,则会选择一个默认。每个 CPU 内核一个 IO 线程是合理的默认值。
workerIOName
- 指定 worker 的名称。如果没有指定,将选择默认的 "XNIO-1"。