Java Berkeley DB DPL - пики операций чтения - PullRequest
1 голос
/ 01 марта 2011

Я использую DPL в Java.У меня есть 1 ГБ хранилища данных.Я запускаю 5 потоков, которые пытаются прочитать те же записи после 1 секунды интервала.Первоначально операция чтения занимает около 15 мс для 5-10 выборок, а затем стабилизируется до 0 мс (микросекунд), а затем после 10-20 выборок она дает один пик в операции чтения (15 мс).причина этого и как настроить BDB для ее решения.

Спасибо

1 Ответ

1 голос
/ 24 апреля 2011

Это может быть сборщик мусора, влияющий на производительность вашего приложения. Попробуйте отслеживать циклы GC с помощью следующей команды:

jstat -gccause <pid-of-java-process> 200

и посмотрите, есть ли какая-либо корреляция между шипами и активностью GC. Jstat обеспечивает следующий вывод:

100.00   0.00   5.63  86.19  60.53    768    4.165    16    0.796    4.960 unknown GCCause      No GC               
  0.00  96.01   0.00  87.15  60.53    769    4.172    16    0.796    4.967 unknown GCCause      No GC               
  0.00  96.01  82.86  87.15  60.54    770    4.172    16    0.796    4.967 unknown GCCause      Allocation Failure  
 75.27   0.00  69.29  87.15  60.54    770    4.175    16    0.796    4.971 unknown GCCause      No GC               
  0.00  94.75  16.33  87.30  60.56    771    4.179    16    0.796    4.975 unknown GCCause      No GC               
 41.07   0.00   0.00  87.69  60.59    772    4.184    16    0.796    4.980 unknown GCCause      No GC   

Когда вы видите Allocation failure, это означает, что полный GC запускается из-за нехватки памяти.

Кстати, jstat является частью дистрибутива JDK, поэтому он должен быть установлен.

...