HCL Connections optimize – JVM Settings

Posted by

Dealing with a medium HCL Connections deployment, you’ll deal with at least 4 JVM’s. At least 6 with the file viewer. Deployment manager and nodeagents not counted.
Going through the JVM Settings in the ISC is still doable in reasonable amount of time.

The scripts from scripting101.stoeps.de make lifes easier if you like to adjust the default settings.

Dealing with a large, HA HCL Connections deployment including HCL Docs we have to deal with 44 JVM’s (dmgr and nodeagents excluded) I needed a way to easily compare and update the configuration in the cluster. For example adding a new server to the Activities Cluster requires you to add all the JVM Custom properties.
Which are hidden deep within the ISC.

In order to have all the settings in 1 place (for documentation) and be able to apply any changes from the commandline I came up with this script: getJVMSettings.py

./wsadmin -lang jython -f getJVMsettings.py /tmp/jvmsettings-$(date +%Y-%m-%d_%H-%M-%S).py

this will export the JVM settings from all Websphere’s JVM’s into /tmp/jvmsettings-[timestamp].py

The output file contains a block like this for each JVM


print 'Server ActivitiesCluster_server1 - init: 1024M - max: 1024M - arg: -Duser.language=en -Duser.region=US -Xmn256M -Xgcpolicy:gencon'
AdminTask.setJVMInitialHeapSize('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -initialHeapSize 1024]')
AdminTask.setJVMMaxHeapSize('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -maximumHeapSize 1024]')
AdminTask.setGenericJVMArguments('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -genericJvmArguments "-Duser.language=en -Duser.region=US -Xmn256M -Xgcpolicy:gencon"]')
print 'ActivitiesCluster_server1: com.ibm.security.jgss.debug = off'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.security.jgss.debug -propertyValue "off"]')
print 'ActivitiesCluster_server1: com.ibm.security.krb5.Krb5Debug = off'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.security.krb5.Krb5Debug -propertyValue "off"]')
print 'ActivitiesCluster_server1: com.ibm.ws.cache.CacheConfig.filterInactivityInvalidation = true'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.ws.cache.CacheConfig.filterInactivityInvalidation -propertyValue "true"]')
print 'ActivitiesCluster_server1: com.ibm.ws.cache.CacheConfig.filteredStatusCodes = 304 404 500 502'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.ws.cache.CacheConfig.filteredStatusCodes -propertyValue "304 404 500 502"]')
print 'ActivitiesCluster_server1: com.ibm.ws.cache.CacheConfig.filterLRUInvalidation = true'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.ws.cache.CacheConfig.filterLRUInvalidation -propertyValue "true"]')
print 'ActivitiesCluster_server1: db2.jcc.charsetDecoderEncoder = 3'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName db2.jcc.charsetDecoderEncoder -propertyValue "3"]')
print 'ActivitiesCluster_server1: com.ibm.ws.cache.CacheConfig.filterTimeOutInvalidation = true'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.ws.cache.CacheConfig.filterTimeOutInvalidation -propertyValue "true"]')
print 'ActivitiesCluster_server1: com.ibm.jsse2.overrideDefaultTLS = true'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.jsse2.overrideDefaultTLS -propertyValue "true"]')
print 'ActivitiesCluster_server1: com.ibm.ws.cache.CacheConfig.ignoreValueInInvalidationEvent = true'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.ws.cache.CacheConfig.ignoreValueInInvalidationEvent -propertyValue "true"]')
print 'ActivitiesCluster_server1: com.ibm.ws.recoverylog.disableNonHARegistration = true'
AdminTask.setJVMSystemProperties('[-serverName ActivitiesCluster_server1 -nodeName ConnectionsNode01 -propertyName com.ibm.ws.recoverylog.disableNonHARegistration -propertyValue "true"]')
AdminConfig.save()

If you need to change a value , just edit the appropriate line starting with AdminTask.
To apply the changes, just run the file.

./wsadmin -lang jython -f /tmp/jvmsettings-[timestamp].py

Verify the changes in the ISC or run the getJVMSettings.py script again.