如何确定兵马俑服务器是否使用磁盘存储?

时间:2016-10-26 22:44:44

标签: ehcache terracotta

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

我已经设置了terracotta服务器,调整了ehcache配置,我可以看到缓存正在运行,但我不确定它是使用内存还是磁盘。我只想将磁盘用于此缓存。

我也收到了一些警告:WARN - Asking for a large amount of memory: 26179740 bytes

Terracotta配置:

<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 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

    上面的示例声明了2Gb的存储空间,其中200Mb将从内存中提供,其余的将从磁盘中提供。 请注意,为了实现服务器的完全可重新启动性,您需要在每个服务器元素中启用它:<restartable enabled="true"/>

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

另请注意,您应该为客户端和服务器使用相同的版本。虽然4.3系列支持不同的客户端和服务器版本,但它的目的是滚动升级,不建议长时间运行。