16.4. 高级 Undertow 配置


16.4.1. IO 配置

从 PAXWEB-1255 开始,可以更改监听器使用的 XNIO worker 和缓冲池的配置。在 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。

可以指定以下 worker 参数:

io-threads
为 worker 创建的 I/O 线程数量。如果没有指定,则线程数量被设置为 CPU hieradata 2 的数量。
task-core-threads
核心任务线程池的线程数量。
task-max-threads
worker 任务线程池的最大线程数量。如果没有指定,则最大线程数设置为 CPU Thycotic 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>

可以指定以下 threadingParameters

minThreads
指定 worker 任务线程池的 "core" 线程数量。通常,这应该具有合理性,每个 CPU 内核至少为 10 个。
maxThreads
指定 worker 任务线程池的最大线程数量。

可以指定以下 worker 参数:

workerIOThreads
指定为 worker 创建的 I/O 线程数量。如果未指定,则会选择默认值。每个 CPU 内核有一个 IO 线程是合理的默认值。
workerIOName
指定 worker 的名称。如果没有指定,则会选择默认的 "XNIO-1"。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.