com.fasterxml.jackson.core.util.InternCache.intern() 高负载下死锁

com.fasterxml.jackson.core.util.InternCache.intern() deadlock under high load

环境:

问题

当我们用 ~7000CCU 的负载测试我们的服务器时,当我们使用 Yourkit 分析我们的应用程序服务器时,我们会看到以下几个。

http-apr-8080-exec-952 <--- Frozen for at least 17 sec
com.fasterxml.jackson.core.util.InternCache.intern(String) InternCache.java:43
com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer.findSymbol(char[], int, int, int) CharsToNameCanonicalizer.java:506
com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseFieldName(int) ReaderBasedJsonParser.java:1182
com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken() ReaderBasedJsonParser.java:602
com.fasterxml.jackson.core.base.ParserMinimalBase.nextValue() ParserMinimalBase.java:128

我们可以做些什么来提高这个库的性能。

我找到了原因,我们没有关闭解析器实例。通过关闭 'finally block' 中的解析器实例,此问题已消失。