Best Practices
To successfully configure the Sterling Order Management System Software environment, it is highly recommended to follow the given best practices.
Essentials best practices
Integrate the essential best practices into your daily operations to maximize the performance of your Sterling Order Management System Containers. For more information, see Essential Best Practices: IBM Sterling Order Management Containers.
Installation locale code and database timezone
The installation locale code is by default set to en_US_EST
. To match with the
other timezones and avoid any timezone calculation errors, set the locale code and database to
en_US_UTC
timezone.
Custom logging
Configure the envVars
and jvmArgs
as shown in the following
example:
envVars:
- groupName: EnvironmentVariables
propertyList:
LOG_DIR: /shared/logs/${OM_POD_NAME}
LIBERTY_LOG_DIR: /shared/logs/${OM_POD_NAME}
MESSAGE_FILE_NAME: ${LOG_DIR}/${OM_POD_NAME}_message.log
TRACE_FILE_NAME: ${LOG_DIR}/${OM_POD_NAME}_trace.log
jvmArgs:
- groupName: BaseJVMArgs
propertyList:
- -DJVM=${OM_POD_NAME}
- -DLOG_DIR=${LOG_DIR}
- -XX:HeapDumpPath=${LOG_DIR}
- -Xdump:heap+java:events=user
- -Xgcpolicy:gencon
- -Xverbosegclog:${LOG_DIR}/${OM_POD_NAME}_verbosegc_%Y%m%d.%H%M%S.%pid.txt
Custom ConfigMaps can be created and mounted with the contents of a custom log4j1 file in the classpath of the application and agent servers as following:
additionalMounts:
configMaps:
- name: log4j-custom
mountPath: /opt/ssfs/runtime/properties/resources/log4jconfig.custom.configmap.xml
subPath: log4jconfig.custom.configmap.xml
- name: log4j-custom
mountPath: /config/dropins/smcfs.ear/properties.jar/resources/log4jconfig.custom.configmap.xml
subPath: log4jconfig.custom.configmap.xml
yfs.log4j.configuration: /resources/log4jconfig.custom.configmap.xml
Extraction of application logs from pods
After you deploy the Sterling Order Management System Software by using the Operator, extract the application logs from the pods. For more information, see Extracting application logs from pods.
Memory settings
In addition to defining server profiles with memory settings, one must also pass the heap size to
the JVM directly. In the following example, one would have to ensure the server profile and the
jvmArgs
match for a given application or agent server.
serverProfiles:
- name: ProfileSmall
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 1Gi
- name: ProfileMedium
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 2Gi
- name: ProfileLarge
resources:
requests:
cpu: 500m
memory: 2Gi
limits:
cpu: 4000m
memory: 4Gi
- name: ProfileHuge
resources:
requests:
cpu: 500m
memory: 4Gi
limits:
cpu: 4000m
memory: 8Gi
- name: ProfileColossal
resources:
requests:
cpu: 500m
memory: 4Gi
limits:
cpu: 4000m
memory: 16Gi
jvmArgs:
- groupName: BaseJVMArgs
propertyList:
- ...
- ...
derivatives:
- groupName: SmallJVMArgs
propertyList:
- -Xms512m
- -Xmx1024m
- groupName: MediumJVMArgs
propertyList:
- -Xms1024m
- -Xmx2048m
- groupName: LargeJVMArgs
propertyList:
- -Xms2048m
- -Xmx4096m
- groupName: HugeJVMArgs
propertyList:
- -Xms4096m
- -Xmx8192m
- groupName: ColossalJVMArgs
propertyList:
- -Xms4096m
- -Xmx16384m
Integrating extensions with your environment
additionalMounts:
storages:
- name: <pvc_name>
mountPath: /opt/ssfs/runtime/extensions
Hardware Recommendations
The database and JMS instances are recommended to be outside of the cluster and running on bare metal machines.