HTTPS connection creation bottlenecked by sun.security.util.MemoryCache
Issue
- Our java application makes many outgoing HTTPS calls and eventually threads are bottlenecked in
sun.security.util.MemoryCache
for HTTPS handshakes:
java.lang.Thread.State: BLOCKED (on object monitor)
at sun.security.util.MemoryCache.put(Cache.java:361)
- waiting to lock <0x00000004d0869d48> (a sun.security.util.MemoryCache)
at sun.security.ssl.SSLSessionContextImpl.put(SSLSessionContextImpl.java:178)
at sun.security.ssl.ClientHandshaker.serverFinished(ClientHandshaker.java:1250)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:376)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
- locked <0x00000004dad2b4e8> (a sun.security.ssl.SSLSocketImpl)
- locked <0x00000004dad2b4a0> (a java.lang.Object)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
- locked <0x00000004dad2b598> (a java.lang.Object)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
- The lock owner is persisting for long amounts of time here:
java.lang.Thread.State: RUNNABLE
at java.util.HashMap$TreeNode.find(HashMap.java:1878)
at java.util.HashMap$TreeNode.find(HashMap.java:1874)
at java.util.HashMap$TreeNode.find(HashMap.java:1874)
at java.util.HashMap$TreeNode.find(HashMap.java:1874)
at java.util.HashMap$TreeNode.find(HashMap.java:1874)
at java.util.HashMap$TreeNode.getTreeNode(HashMap.java:1886)
at java.util.HashMap.removeNode(HashMap.java:824)
at java.util.HashMap.remove(HashMap.java:799)
at sun.security.util.MemoryCache.emptyQueue(Cache.java:299)
at sun.security.util.MemoryCache.put(Cache.java:361)
- locked <0x00000004d0869d48> (a sun.security.util.MemoryCache)
at sun.security.ssl.SSLSessionContextImpl.put(SSLSessionContextImpl.java:178)
at sun.security.ssl.ClientHandshaker.serverFinished(ClientHandshaker.java:1250)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:376)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
- locked <0x00000004dacced50> (a sun.security.ssl.SSLSocketImpl)
- locked <0x00000004dacced08> (a java.lang.Object)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
- locked <0x00000004daccee00> (a java.lang.Object)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
Environment
- Java
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.