4.2. 配置 JBoss EAP for OpenShift 使用环境变量
使用环境变量是为 OpenShift 镜像配置 JBoss EAP 的建议方法。如需有关为应用程序容器和构建容器 指定环境变量 的说明,请参阅 OpenShift 文档。
例如,您可以在创建 OpenShift 应用程序时使用环境变量设置 JBoss EAP 实例的管理用户名和密码:
参考资料信息 列出了用于 OpenShift 镜像的 JBoss EAP 的可用 环境变量。
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):用户内存的 fifty percent(50%)
- 初始堆大小(-Xms):计算最大堆大小的二十五百(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 垃圾回收设置 复制链接链接已复制到粘贴板!
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:GCFileSize=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。
| 变量名称 | 示例 | 默认值 | JVM 设置 | 描述 |
|---|---|---|---|---|
| JAVA_OPTS | -verbose:class | 没有默认值 | Multiple |
传递给
使用
使用
另外,如果没有启用自动内存计算,则不会定义 inital Java 内存(-Xms)和最大 Java 内存(-Xmx)。
如果使用 |
| JAVA_OPTS_APPEND | -Dsome.property=value | 没有默认值 | Multiple |
用户指定的 Java 选项以附加到 |
| JAVA_MAX_MEM_RATIO | 50 | 50 | -Xmx |
当 |
| JAVA_INITIAL_MEM_RATIO | 25 | 25 | -Xms |
在 |
| JAVA_MAX_INITIAL_MEM | 4096 | 4096 | -Xms |
在 |
| JAVA_DIAGNOSTICS | true | false(禁用) | 设置取决于容器使用的 JDK。
|
将这个变量的值设置为 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。默认情况下,此变量为 undefined。在这种情况下,如果没有在容器上定义限制,则不会设置 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。