IBM App Connect Enterprise
IBM App Connect Enterprise (ACE) is formerly known as IBM Integration Bus (IIB), and before that, WebSphere Message Broker (WMB). It is a combination of a C/C++ program and a JVM.
Terms
- Integration Server (also known as a DataFlowEngine [DFE] or an Execution Group): Where message flows and resources are deployed and executed. This process includes the JVM.
- Integration Node: An optional process that manages a set of integration servers (not applicable to containers).
- "Additional instances" are basically the available number of worker threads.
Set JVM options
Java arguments may be specified with environment
variables (e.g. IBM_JAVA_OPTIONS
) or with mqsichangeproperties [...] jvmSystemProperty
.
The downside of using environment variables is that multiple execution
groups may use a single profile script, thus, per-execution group
settings cannot be specified.
jvmSystemProperty
To set JVM options using the mqsichangeproperties
jvmSystemProperty
sub-command, first list the existing system properties:
mqsireportproperties $NODE -e $SERVER -o ComIbmJVMManager -n jvmSystemProperty
Then, prepend the results of the above command (if any) with the updated arguments into the last argument of the following command. Wrap the entire JVM options string with single quotes and each argument inside with double quotes; for example:
mqsichangeproperties $NODE -e $SERVER -o ComIbmJVMManager -n jvmSystemProperty -v '"-Xverbosegclog:verbosegc.%seq.log,20,50000" "-Doption1=true"'
Using environment variables
Java arguments may be specified with the environment variable IBM_JAVA_OPTIONS
for IBM Java. Environment
variables are generally set in the profile
. First,
check if IBM_JAVA_OPTIONS
is already in the
profile
. If it is, append the arguments; otherwise, add the
export
; for example:
export IBM_JAVA_OPTIONS="-Xverbosegclog:verbosegc.%seq.log,20,50000 -Doption1=true"
Verbose garbage collection
Verbose garbage collection is generally recommended for production with benchmarks showing an overhead of ~0.1%. Verbosegc helps investigate OutOfMemoryErrors and garbage collection overhead.
ACE/IIB JVMs may share the same current working directory (e.g.
$WORKPATH/common/errors
); therefore, to allow sets of
rotating verbosegc files for each JVM, add a unique name to each JVM's
added
options; for example, replace both instances of $SERVER
with each JVM's unique name in the following example (combining with
pre-existing mqsireportproperties
, if any):
mqsichangeproperties $NODE -e $SERVER -o ComIbmJVMManager -n jvmSystemProperty -v '"-Xverbosegclog:verbosegc.$SERVER.%seq.log,20,50000"'
Request Thread Dump
By default, ACE/IIB set
-Xdump:heap:events=user -Xdump:snap:events=user
so
kill -3 $PID
will produce a heapdump (*.phd
)
and snapdumps (Snap*.trc
) in addition to a thread dump
(javacore*txt
). There is no way to disable this.
To produce a thread dump without a heapdump and snapdump, on ACE
>= 11.0.0.9 and IIB >= 10.0.0.9, you may use
mqsichangeproperties [...] core
:
mqsichangeproperties $NODE -e $SERVER -o ComIbmInternalSupportManager/Java/JVM -n dump -v core
Thread dumps are generally written to
$WORKPATH/common/errors/
Request Heap Dump
To produce a heap dump, on ACE >= 11.0.0.9 and IIB >= 10.0.0.9,
you may use
mqsichangeproperties [...] heap
:
mqsichangeproperties $NODE -e $SERVER -o ComIbmInternalSupportManager/Java/JVM -n dump -v heap
Heap dumps are generally written to
$WORKPATH/common/errors/
Request System Dump
To produce a system dump, on ACE >= 11.0.0.9 and IIB >=
10.0.0.9, you may use
mqsichangeproperties [...] system
:
mqsichangeproperties $NODE -e $SERVER -o ComIbmInternalSupportManager/Java/JVM -n dump -v system
However, currently, this mechanism does not use
request=exclusive+prepwalk
so it is not recommended.
Instead, see J9 System Dump
Recipe.
JDBC
The JDBC connection pool idle timeout is set with the environment
variable MQSI_JDBC_POOL_EXPIRY
(in seconds) which defaults
to 900 seconds (15 minutes). The maximum value is 100000000 (~3
years).
The JDBC query timeout is set with the environment variable
MQSI_POOL_DBCALL_TIMEOUT
(in seconds) which defaults to 15 or 60 seconds
depending on APAR IT34228. The maximum value is 600 or 18000
seconds depending on APAR IT34228.
The JDBC monitoring statistics include connection pool utilization but do not include average drive response time.
Diagnostic Trace
- User trace: https://www.ibm.com/support/pages/collecting-user-level-trace-iib-integration-server
- Service trace:
- JDBC trace:
- ODBC trace: https://www.ibm.com/support/pages/node/78037