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
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): 사용자 메모리의 50%
- 초기 힙 크기(-Xms): 계산된 최대 힙 크기의 25퍼센트(25%)입니다.
예를 들어 정의된 메모리 제한은 1GB이고 이 제한은 /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:GCLogFileSize=3M -XX:-TraceClassUnloading
Java 11에 대한 가비지 컬렉션 로깅 설정(Modular 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을 구성합니다.
표 4.1. JVM 환경 변수
변수 이름 | 예제 | 기본값 | JVM 설정 | 설명 |
---|---|---|---|---|
JAVA_OPTS | -verbose:class | 기본값 없음 | multiple |
또한 자동 메모리 계산이 활성화되어 있지 않으면 초기 Java 메모리(-Xms) 및 최대 Java 메모리(-Xmx)가 정의되지 않습니다.
|
JAVA_OPTS_APPEND | -Dsome.property=value | 기본값 없음 | multiple |
|
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 로 설정합니다. |
디버그 | 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
를 사용합니다.