4.2. 使用环境变量为 OpenShift 配置 JBoss EAP


使用环境变量是为 OpenShift 镜像配置 JBoss EAP 的推荐方法。如需有关为应用容器和构建容器指定环境变量的说明,请参阅 OpenShift 文档。

例如,您可以在创建 OpenShift 应用程序时使用环境变量设置 JBoss EAP 实例的管理用户名和密码:

oc new-app --template=eap74-basic-s2i \
 -p IMAGE_STREAM_NAMESPACE=eap-demo \
 -p SOURCE_REPOSITORY_URL=https://github.com/jboss-developer/jboss-eap-quickstarts \
 -p SOURCE_REPOSITORY_REF=7.4.x \
 -p CONTEXT_DIR=kitchensink \
 -e ADMIN_USERNAME=myspecialuser \
 -e ADMIN_PASSWORD=myspecialp@ssw0rd

参考信息中列出了 JBoss EAP for OpenShift 镜像的可用环境变量。

4.2.1. JVM 内存配置

OpenShift EAP 镜像具有根据当前环境自动计算默认 JVM 内存设置的机制,但也可以使用环境变量配置 JVM 内存设置。

4.2.1.1. JVM 默认内存设置

如果为当前容器定义了内存限值,并且限制低于可用内存总量,则会自动计算默认 JVM 内存设置。否则,默认 JVM 内存设置是 EAP 版本的 standalone.conf 文件中定义的默认文件,用作镜像的基础服务器。

容器内存限值从文件 /sys/fs/cgroup/memory/memory.limit_in_bytes 中检索。使用 /proc/meminfo 命令检索可用内存总量。

当自动计算内存设置时,会使用以下公式:

  • 最大堆大小(-Xmx): 50% 的用户内存
  • 初始堆大小(-Xms):计算的最大堆大小的 2 5%(25%)

例如,定义的内存限值为 1 GB,这个限制低于 /proc/meminfo 报告的总可用内存,然后内存设置将为: -Xms128m -Xmx512

您可以使用以下环境变量来修改自动计算的 JVM 设置:请注意,这些变量仅在自动计算默认内存大小时才使用(换句话说,定义有效的容器内存限值)。

  • JAVA_MAX_MEM_RATIO
  • JAVA_INITIAL_MEM_RATIO
  • JAVA_MAX_INITIAL_MEM

您可以通过将以下两个环境变量的值设置为 0 来禁用自动内存计算。

  • JAVA_INITIAL_MEM_RATIO
  • JAVA_MAX_MEM_RATIO

4.2.1.2. JVM Garbage Collection 设置

OpenShift 的 EAP 镜像包含垃圾回收和垃圾回收日志记录的设置

垃圾收集器设置

-XX:+UseParallelOldGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError

Java 8 的垃圾收集日志记录设置(非模式 JVM)

-verbose:gc -Xloggc:/opt/eap/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading

Java 11 的垃圾收集日志记录设置(模态 JVM)

-Xlog:gc*:file=/opt/eap/standalone/log/gc.log:time,uptimemillis:filecount=5,filesize=3M

4.2.1.3. 默认设置中的资源限制

如果设置,镜像中会包含其他默认设置。

-XX:ParallelGCThreads={core-limit} -Djava.util.concurrent.ForkJoinPool.common.parallelism={core-limit} -XX:CICompilerCount=2

{core-limit} 的值使用 JAVA_CORE_LIMIT 环境变量或容器实施的 CPU 核心限制来定义。

CICompilerCount 的值始终固定为 2

4.2.1.4. JVM 环境变量

使用这些环境变量,在 EAP 中为 OpenShift 镜像配置 JVM。

Expand
表 4.1. JVM 环境变量
变量名称示例默认值JVM 设置描述

JAVA_OPTS

-verbose:class

没有默认

多个

要传递给 java 命令的 JVM 选项。

使用 JAVA_OPTS_APPEND 配置额外的 JVM 设置。如果使用 JAVA_OPTS,一些不可配置的默认值不会添加到服务器 JVM 设置中。您必须明确添加这些设置。

使用 JAVA_OPTS 时,将禁用容器脚本默认添加的某些设置。禁用的设置包括

  • -XX:MetaspaceSize=96M
  • -Djava.net.preferIPv4Stack=true
  • -Djboss.modules.system.pkgs=jdk.nashorn.api,com.sun.crypto.provider
  • -Djava.awt.headless=true

此外,如果没有启用自动内存计算,则不定义初始 Java 内存(-Xms)和最大 Java 内存(-Xmx)。

如果您使用 JAVA_OPTS 配置附加设置,请添加这些默认值。

JAVA_OPTS_APPEND

-Dsome.property=value

没有默认

多个

用户指定的 Java 选项,可附加到 JAVA_OPTS 中生成的选项.

JAVA_MAX_MEM_RATIO

50

50

-Xmx

如果未在 JAVA_OPTS 中指定 -Xmx 选项,则使用此变量。此变量的值用于根据容器的限制计算默认的最大堆内存大小。如果在没有内存约束的容器中使用此变量,则 变量无效。如果在具有内存约束的容器中使用此变量,则 -Xmx 的值被设置为容器可用内存的指定比率。默认值为 50,表示可用内存的 50% 用作上限。要跳过最大内存计算,将此变量的值设置为 0。No -Xmx 选项将添加到 JAVA_OPTS

JAVA_INITIAL_MEM_RATIO

25

25

-xms

如果未在 JAVA_OPTS 中指定 -Xms 选项,则使用此变量。此变量的值用于根据最大堆内存计算默认初始堆内存大小。如果在没有内存约束的容器中使用此变量,则 变量无效。如果在具有内存约束的容器中使用此变量,则 -Xms 的值被设置为 -Xmx 内存的指定比率。默认值为 25,表示最大内存的 25% 用作初始堆大小。要跳过初始内存的计算,将此变量的值设置为 0。No -Xms 选项将添加到 JAVA_OPTS

JAVA_MAX_INITIAL_MEM

4096

4096

-xms

如果未在 JAVA_OPTS 中指定 -Xms 选项,则使用此变量。此变量的值用于计算初始内存堆的最大大小。该值以兆字节(MB)为单位表示。如果在没有内存约束的容器中使用此变量,则 变量无效。如果此变量在具有内存约束的容器中使用,则 -Xms 的值将设置为 变量中指定的值。默认值为 4096MB,指定最大初始堆永远不会大于 4096MB。

JAVA_DIAGNOSTICS

true

false (disabled)

设置取决于容器使用的 JDK。

  • OpenJDK8: -XX:NativeMemoryTracking=summary -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UnlockDiagnosticVMOptions
  • OpenJDK11: -Xlog:gc:utctime -XX:NativeMemoryTracking=summary

将此变量的值设为 true,以在发生事件时将诊断信息包含在标准输出中。如果在 JAVA_DIAGNOSTICS 已定义为 true 的环境中将此变量定义为 true,则仍会包含诊断。

DEBUG

true

false

-agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n

启用远程调试。

DEBUG_PORT

8787

8787

-agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n

指定用于调试的端口。

JAVA_CORE_LIMIT

 

未定义

-XX:parallelGCThreads -Djava.util.concurrent.ForkJoinPool.common.parallelism -XX:CICompilerCount

内核数的用户定义的限制。如果容器报告了限制约束,则 JVM 设置的值仅限于容器核心限值。-XXCICompilerCount 的值始终为 2。默认情况下,此变量未定义。在这种情况下,如果容器中没有定义限制,则不会设置 JVM 设置。

GC_MIN_HEAP_FREE_RATIO

20

10

-XX:MinHeapFreeRatio

垃圾回收后最少空闲堆的百分比以避免扩展。

GC_MAX_HEAP_FREE_RATIO

40

20

-XX:MaxHeapFreeRatio

垃圾回收后的最大堆百分比以避免收缩。

GC_TIME_RATIO

4

4

-XX:GCTimeRatio

指定垃圾回收之外所用时间(例如,应用程序执行时间)与垃圾回收所花费的时间比例。

GC_ADAPTIVE_SIZE_POLICY_WEIGHT

90

90

-XX:AdaptiveSizePolicyWeight

给予当前垃圾收集时间与之前的垃圾回收时间的权重。

GC_METASPACE_SIZE

20

96

-XX:MetaspaceSize

初始元空间大小。

GC_MAX_METASPACE_SIZE

100

256

-XX:MaxMetaspaceSize

最大元空间大小。

GC_CONTAINER_OPTIONS

-XX:+UseG1GC

-XX:-UseParallelOldGC

-XX:-UseParallelOldGC

指定要使用的 Java 垃圾回收。变量的值应当是 JRE 命令行选项,用于指定所需的垃圾回收。指定的 JRE 命令覆盖默认值。

以下环境变量已弃用:

  • JAVA_OPTIONS :使用 JAVA_OPTS
  • INITIAL_HEAP_PERCENT :使用 JAVA_INITIAL_MEM_RATIO.
  • container_HEAP_PERCENT :使用 JAVA_MAX_MEM_RATIO
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部