Как узнать, использует ли терракотовый сервер дисковое хранилище?

Я установил ehcache, который использует хранилище дисков для кэширования некоторых файлов. Это работает, и я вижу файл кэша, созданный на диске, но я хочу, чтобы такое поведение также происходило на сервере терракоты, чтобы к нему могли обращаться несколько клиентов.

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

Я также получаю некоторые предупреждения, подобные этому: WARN - Asking for a large amount of memory: 26179740 bytes

Терракотовый конфиг:

<servers>
    <mirror-group>
      <server host="localhost" name="localhost" >
        <data>/opt/terracotta/data</data>
        <tsa-port>9510</tsa-port>
        <management-port>9540</management-port>
        <tsa-group-port>9530</tsa-group-port>
        <dataStorage size="2g">
          <offheap size="100m"/>            
          <hybrid/> 
        </dataStorage>        
        <logs>stdout:</logs>
      </server>
</mirror-group>

Я настраиваю ehcache программно, и я уверен, что следующий конфиг неверен, но, возможно, близок к тому, что нужно.

TerracottaConfiguration config = new TerracottaConfiguration()
                .clustered(true)
.compressionEnabled(true);

Cache httpCache = new Cache(new CacheConfiguration()
                .name(HTTP_CACHE)
                .maxEntriesLocalHeap(1)              
                .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU)
               .diskExpiryThreadIntervalSeconds(Properties.CACHE_HTTP_EXPIRY)
                .persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.DISTRIBUTED))
.terracotta(config));

1 ответ

Решение

Учитывая информацию о конфигурации и версии, приведенную в комментариях:

  • Терракотовый сервер с открытым исходным кодом использует только хранилище в памяти.

    <dataStorage size="2g">
      <offheap size="2g"/>
    </dataStorage>
    

    В этом примере у вас есть 2 Гб хранилища данных, все с использованием offheap. И, конечно же, на диске не будет содержимого. Это означает, что если сервер выключен, все данные будут потеряны. Конечно, вы можете иметь два сервера в одной зеркальной группе для обеспечения высокой доступности.

  • С помощью функции Enterprise вы можете эффективно сохранять данные на диске для возможности перезапуска.

    <dataStorage size="2g">
      <offheap size="200m"/>
      <hybrid/>
    </dataStorage>
    

    В приведенном выше примере объявляется 2 ГБ хранилища, из которых 200 МБ будут обслуживаться из памяти, а остальные - с диска. Обратите внимание, что для полной перезапуска сервера вам необходимо включить его через: <restartable enabled="true"/> в каждом элементе сервера.

Для получения более подробной информации обо всем этом, пожалуйста, обратитесь к документации продукта.

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

Другие вопросы по тегам