如何确定 terracotta 服务器是否正在使用磁盘存储?

How to find out if terracotta server is using disk storage?

我设置了一个使用磁盘存储来缓存一些文件的 ehcache。这是有效的,我可以看到在磁盘上创建的缓存文件,但我想在 terracotta 服务器中也有这种行为,所以缓存可以被多个客户端访问。

我已经设置了 terracotta 服务器,调整了 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));

鉴于评论中给出的配置和版本信息:

  • 开源 Terracotta 服务器仅使用内存存储。

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

    在此示例中,您有 2Gb 的数据存储空间,全部使用堆外存储。 当然不会有磁盘内容。 这意味着如果服务器关闭,所有数据都会丢失。 当然你可以在一个镜像组中有两个服务器以获得高可用性。

  • 使用 Enterprise 功能,您可以有效地将数据持久保存在磁盘上以启用重启能力。

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

    上面的示例声明了 2Gb 的存储空间,其中 200Mb 将由内存提供,其余的由磁盘提供。 请注意,为了具有完整的服务器可重启性,您需要通过以下方式启用它:每个服务器元素中的 <restartable enabled="true"/>

有关所有这些的更多详细信息,请参阅 product documentation

另请注意,您应该为客户端和服务器使用相同的版本。虽然 4.3 行支持不同的客户端和服务器版本,但它旨在滚动升级,不推荐使用较长的 运行 设置。