Thursday, March 16, 2017

WebLogic ClusterMessaging

We occasionally see these messages in an instance of a WLS cluster:

####<Mar 8, 2017 10:21:43 AM CET> <Info> <WorkManager> <myhost> <myserver> <[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1488964903589> <BEA-002939> <The maximum thread constraint ClusterMessaging has been reached 2 times for the last 237 seconds.>

What is that constraint ClusterMessaging ? It's set internally by WLS on a WorkManager, it allows max 8 threads to handle the internal cluster messaging and this parameter can't be changed.

If you want to detect what is wrong, take a few thread dumps at interval of 3-5 seconds. Most likely you have some huge object in the JNDI tree being serialized/deserialized. Another possibility is that you have a non serializable object in the JNDI tree. If this is not the case, try analyzing your network traffic (the procedure could be very differend depending if you are using Multicast of Unicast)

In our case, we had this message which could be a hint that serialization is wrong:

<Mar 14, 2017 10:30:19 AM CET> <Error> <Cluster> <BEA-000123> <Conflict start: You tried to bind an object under the name jdbc.workflow.HibernateSessionFactory in the JNDI tree. The object from -2132852355821393490S:[-1,-1,32275,32275,-1,-1,-1]:mydomain:myserver01 is non-clusterable, and you have tried to bind more than once from two or more servers. Such objects can only be deployed from one server.>

No comments: