Submitter reporting high contention in security libraries. These are being observed during 100 concurrent threads load test for OAM Authentication. Sample thread dumps below.
Bottleneck 1 :
============
"Grizzly-worker(61)" daemon prio=10 tid=0x00007f2b4400d000 nid=0x64ef waiting 
for monitor entry [0x00007f2c466e5000] 
   java.lang.Thread.State: BLOCKED (on object monitor) 
at java.security.Provider.getService(Provider.java:680) 
- waiting to lock <0x000000074045d918> (a sun.security.provider.Sun) 
at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:436) 
at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:375) 
at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:485) 
at java.security.Signature.getInstance(Signature.java:223) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.verify(TokenUtils.java:174) 
at oracle.idm.gateway.grs.token.impl.AToken.verify(AToken.java:583) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.verifyAToken(TokenUtils.java:671) 
"Grizzly-worker(62)" daemon prio=10 tid=0x00007f2b5c012800 nid=0x64f0 
runnable [0x00007f2c465e4000] 
   java.lang.Thread.State: RUNNABLE 
at java.security.Provider.getService(Provider.java:680) 
- locked <0x000000074045d918> (a sun.security.provider.Sun) 
at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:436) 
at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:375) 
at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:485) 
at java.security.Signature.getInstance(Signature.java:223) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.sign(TokenUtils.java:152) 
at oracle.idm.gateway.grs.token.impl.AToken.sign(AToken.java:476) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.createAToken(TokenUtils.java:639) 
==========
Bottleneck 2 :
============
"Grizzly-worker(92)" daemon prio=10 tid=0x00007f2b1c012000 nid=0x6902 waiting 
for monitor entry [0x00007f2c45cda000] 
   java.lang.Thread.State: BLOCKED (on object monitor) 
at sun.security.rsa.RSACore$BlindingParameters.getBlindingRandomPair(RSACore.java :388) 
- waiting to lock <0x0000000742057aa0> (a sun.security.rsa.RSACore$BlindingParameters) 
at sun.security.rsa.RSACore.getBlindingRandomPair(RSACore.java:429) 
at sun.security.rsa.RSACore.crtCrypt(RSACore.java:165) 
at sun.security.rsa.RSACore.rsa(RSACore.java:110) 
at sun.security.rsa.RSASignature.engineSign(RSASignature.java:177) 
at java.security.Signature$Delegate.engineSign(Signature.java:1180) 
at java.security.Signature.sign(Signature.java:553) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.sign(TokenUtils.java:155) 
at oracle.idm.gateway.grs.token.impl.AToken.sign(AToken.java:476) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.createAToken(TokenUtils.java:639) 
"Grizzly-worker(90)" daemon prio=10 tid=0x00007f2b7000c800 nid=0x68ff 
runnable [0x00007f2c461e0000] 
   java.lang.Thread.State: RUNNABLE 
at sun.security.rsa.RSACore$BlindingParameters.getBlindingRandomPair(RSACore.java :388) 
- locked <0x0000000742057aa0> (a sun.security.rsa.RSACore$BlindingParameters) 
at sun.security.rsa.RSACore.getBlindingRandomPair(RSACore.java:429) 
at sun.security.rsa.RSACore.crtCrypt(RSACore.java:165) 
at sun.security.rsa.RSACore.rsa(RSACore.java:110) 
at sun.security.rsa.RSASignature.engineSign(RSASignature.java:177) 
at java.security.Signature$Delegate.engineSign(Signature.java:1180) 
at java.security.Signature.sign(Signature.java:553) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.sign(TokenUtils.java:155) 
at oracle.idm.gateway.grs.token.impl.AToken.sign(AToken.java:476) 
at oracle.idm.gateway.grs.token.impl.TokenUtils.createAToken(TokenUtils.java:639)