After enabling SOA Performance Management and Cross JVM and agent features, the size of CorID grows during the life of the transaction to a point that where the token server rejects it because of its size.
The application server token size is limited to 100 so we have limited the size of CorID on the Agent by setting introscope.agent.crossprocess.correlationid.maxlimit=100
What would be the impact of setting introscope.agent.crossprocess.correlationid.maxlimit=100 on the cross process transaction and cross jvm features?
What is the purpose of the introscope.agent.crossprocess.sequenceid.maxlimit agent property?
What are the recommendations for setting these 2 agent properties: correlationid.maxlimit and sequenceid.maxlimit?
If the application token size has been limited there is a high possibility that the cross process transaction might not work as expected.
The correlation ID is added in the SOAP/HTTP header when cross-process transaction tracing is turned on. When transactions start spanning across different JVMs, you need this ID to associate the origin of this call and to figure out how many JVMs are involved.
The agent uses an API called CorrelationID and it does the below:
1. creates a unique ID if not present in the Correlation Cache
2. serializes AppMap data
3. creates some sequence information
Here is an example of a CordID:
CodID = 8F654DFD0A808218001321F5C06C1771
SeqID = 1:1:1:3:3:3:3:3:3:1:3:2:3:3:...
AppMap data = is the last part.
The below Agent properties are available to control the size of the CordID above:
a) introscope.agent.crossprocess.correlationid.maxlimit = controls the size of the entire above string. The default value for this property is 4096
b) introscope.agent.crossprocess.sequenceid.maxlimit = controls the size of only the seqlID part. It is a hidden property and default value for this is 32, The sequence ID max limit number can be any number greater than 4.
1. If the size of the CodID is causing a problem on the application server side CA Support recommends to:
a) initially set introscope.agent.crossprocess.sequenceid.maxlimit=4
b) If still experiencing problems set introscope.agent.crossprocess.correlationid.maxlimit=512
c) If the application is still not working as expected you need to keep on decreasing introscope.agent.crossprocess.correlationid.maxlimit
2. Setting the correct values for the above 2 properties is a tuning exercise that you need to perform in a QA/pre-pro environment
3. Depending on the design of your application and load on each environment, the settings that work in one environment may not necessarily work in another.
What are the impact if you set the properties to lower values than expected?
1. If sequenceid.maxlimit is set to a lower value, transaction trace will be impacted as a few components of the transaction may not come in order, we will not be able to keep track of the sequence of the entire user transaction as the agent would not be able to correlate the transactions.
2.If correlationid.maxlimit is set to a lower value, it can impact both Transaction tracesr and AppMap features.
It can prevent a memory overhead because when seqid keeps increasing the size of the char array in heap if some transactions are going back and forth too many times, it can cause a memory spike or OutofMemory in the worst case.