My Oracle Support Banner

Hogging Thread Synchronization Issue In Completemessagetimeouttrigger.Register() (Doc ID 848087.1)

Last updated on MAY 21, 2021

Applies to:

Oracle WebLogic Server - Version 9.1 and later
Information in this document applies to any platform.

Symptoms

Performance of the application is affected due to synchronization in WebLogic code at the following calls:

  1. Requests for reserving a connection from the connection pool is waiting on Authentication at weblogic.security.acl.internal.AuthenticatedSubject$SealableSet$1.(AuthenticatedSubject.java:551(Compiled Code)).

    Every time WebLogic tries to get a connection it calls ConnectionPool.reserve(). It in turn calls HashSet.contains(), which in in turn calls AuthenticatedSubject.equals(). The AuthenticatedSubject.equals() method then iterates over all the principals checking that both objects have the same principals.
    In certain cases, the subjects may have up to 600 principals, so if this processing is required every time a connection is requested (there are 480 users), and since this all happens inside a synchronized block and this can cause threads to hog.
     
  2. Huge number of threads blocked on weblogic.servlet.internal.CompleteMessageTimeoutTrigger.register() method.

    The register method uses a Map which is again synchronous that is believed to affect performance. Even though the amount of time spent in the blocking methods is small, when scaled up to 500 users the lack of concurrency causes threads to block and hence reduce response times.

Changes

 

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Changes
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.