Производительность EHcache при использовании кеша дискового хранилища

Мы используем ehcache в нашем приложении. Посмотрите на следующую конфигурацию:

<diskStore path="java.io.tmpdir" />
<cache name="service" maxElementsInMemory="50000" eternal="true" overflowToDisk="true"/>

Поскольку мы настроили как eternal = "true", будет ли он создавать кеши навсегда ?. Есть ли вероятность нехватки места на диске?

Каким будет влияние на производительность дискового хранилища? Он определенно медленнее, чем кеш в памяти, но насколько сильно влияет.

Если на диске будет храниться больше кешей, вызовет ли это проблема ввода-вывода при выполнении нескольких файловых операций?

Пожалуйста, предложите наилучшую практику для приложений производственного уровня. Учтите, что у нас есть кучная память объемом 3 ГБ и 25000 пользователей, одновременно обращающихся к приложению. Но в нашем приложении нет базы данных.

Приложение развернуто в WAS 8.5.5.


person Krishna    schedule 19.01.2016    source источник


Ответы (1)


eternal=true означает, что срок действия сопоставлений никогда не истечет.

overflowToDisk=true означает, что все сопоставления, помещенные в кэш, в конечном итоге будут записаны на диск, начиная с первого сопоставления, помещенного в кеш. Текущая многоуровневая модель Ehcache (начиная с версии 2.6.0) всегда использует более медленное хранилище - диск здесь - для обеспечения предсказуемой задержки. Когда к отображению обращаются, оно сбрасывается в кучу для более быстрого извлечения. Когда в куче возникает ошибка слишком большого количества сопоставлений, происходит вытеснение из кучи, чтобы сохранить размер кеш-памяти в соответствии с maxElementsInMemory.

Учитывая, что вы не определяете размер дискового хранилища, задав maxElementsLocalDisk, по умолчанию используется 0, что означает отсутствие ограничений. Так что да, у вас может закончиться дисковое пространство, если вы никогда явно не удаляете записи из кеша.

Довольно сложно рекомендовать правильный размер кеша, не зная подробностей вашего приложения. Я могу порекомендовать вам измерить использование кучи и диска и оценить, когда увеличение использования памяти перевешивает прирост производительности.

person Louis Jacomet    schedule 19.01.2016
comment
Спасибо за ответ - person Krishna; 19.01.2016
comment
maxElementsOnDisk = 4000 мы использовали. в чем разница в maxElementsLocalDisk. - person Krishna; 19.01.2016
comment
История :-) maxElementsOnDisk - это историческое имя, которое, как мне кажется, устарело с версии 2.5 и заменено на maxElementsLocalDisk. Но он контролирует ту же самую внутреннюю переменную. - person Louis Jacomet; 19.01.2016
comment
В качестве добавленного комментария, учитывая новую модель хранилища, ваш диск ДОЛЖЕН быть больше, чем ваша куча, поскольку это будет максимальный предел сопоставлений. - person Louis Jacomet; 19.01.2016