2016-01-19 4 views
0

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

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

Поскольку мы настроены как вечна = «истина», Собираются создать кэши навсегда ?. Есть ли вероятность нехватки дискового пространства?

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

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

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

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

ответ

2

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

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

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

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

+0

Благодарим вас за ответ – Krishna

+0

maxElementsOnDisk = 4000 мы использовали. в чем разница в maxElementsLocalDisk. – Krishna

+0

История :-) maxElementsOnDisk - это историческое имя, которое не рекомендуется с 2,5 года, и я заменил его на maxElementsLocalDisk. Но он контролирует ту же внутреннюю переменную. –