2015-03-11 2 views
1

ENV:com.fasterxml.jackson.core.util.InternCache.intern() взаимоблокировки при высокой нагрузке

  • Амазонки
  • Centos
  • Apache-7.0.53-кот
  • Java 8
  • Джексона-ядро-2.2.3

Задача

Когда мы тестируем наши серверы с нагрузкой ~ 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 

Что мы можем сделать для повышения производительности этой библиотеки.

ответ

2

Я нашел причину, мы не закрывали экземпляр синтаксического анализатора. Закрыв экземпляр синтаксического анализатора в «finally block», эта проблема исчезла.

+1

Да, это обычно является признаком такой утечки - только в таких случаях это должно стать узким местом. FWIW, более поздние версии попытаются обработать это немного более изящно, но принципиально не закрывая парсер, добавят другие виды накладных расходов, поэтому вы действительно хотите обеспечить закрытие. – StaxMan

+0

Вы попробовали val jf = new JsonFactory(); jf.configure (JsonFactory.Feature.INTERN_FIELD_NAMES, false); jf.configure (JsonFactory.Feature.CANONICALIZE_FIELD_NAMES, false); – Vitamon

Смежные вопросы