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

时间:2015-03-11 14:05:53

标签: java jackson tomcat7 deadlock

ENV:

  • 亚马逊
  • Centos的
  • Apache的Tomcat的7.0.53
  • Java 8
  • 杰克逊 - 芯 - 2.2.3

问题

当我们使用~7000CCU的负载测试我们的服务器时,当我们使用Yourkit分析我们的appservers时,我们会看到以下几种情况。

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

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

1 个答案:

答案 0 :(得分:2)

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