我制作了Java应用程序以将数据加载到分布式缓存。
应用程序可以很好地加载数据,但是当加载超过1000万条记录时,会出现“不存在用于服务DistributedSessions的支持存储的节点”错误。但是当我加载不到1000万条记录时,它运行良好。
我在Web逻辑中创建一个集群,并按如下所示加入4个点:

•2个服务器(Storage enable = true)以存储数据

•2个客户端(Storage enable = false)只能查看和查询

tangosol-coherence-override.xml

 





<cluster-config>
    <member-identity>
        <cluster-name system-property="tangosol.coherence.cluster">CLUSTER_NAME</cluster-name>
    </member-identity>
    <multicast-listener>
        <time-to-live system-property="tangosol.coherence.ttl">30</time-to-live>
        <address>224.1.1.1</address>
        <port>12346</port>
    </multicast-listener>

</cluster-config>

<logging-config>


coherence-cache-config.xml

<?xml version="1.0"?>






<serializer system-property="tangosol.coherence.serializer"/>


<socket-provider system-property="tangosol.coherence.socketprovider"/>






<cache-mapping>
  <cache-name>*</cache-name>
  <scheme-name>example-distributed</scheme-name>
</cache-mapping>





    
    

      <scheme-name>example-distributed</scheme-name>

      <service-name>DistributedCache</service-name>

  <backing-map-scheme>
    <local-scheme>
      <scheme-ref>example-binary-backing-map</scheme-ref>
    </local-scheme>
  </backing-map-scheme>

  <autostart>true</autostart>
</distributed-scheme>

<local-scheme>
  <scheme-name>example-binary-backing-map</scheme-name>

  <eviction-policy>HYBRID</eviction-policy>
  <high-units>{back-size-limit 0}</high-units>
  <unit-calculator>BINARY</unit-calculator>
  <expiry-delay>0</expiry-delay>

  <cachestore-scheme></cachestore-scheme>
</local-scheme>





服务器参数:

-Xms6g

-Xmx12g

-Xincgc

-XX:-UseGCOverheadLimit

-Dtangosol.coherence.distributed.localstorage = true

-Dtangosol.coherence.cluster = CLUSTER_NAME

-Dtangosol.coherence.clusteraddress = 224.1.1.1

-Dtangosol.coherence.clusterport = 12346

客户论点:

-Xms1g

-Xmx1g

-Xincgc

-XX:-UseGCOverheadLimit

-Dtangosol.coherence.distributed.localstorage = false

-Dtangosol.coherence.session.localstorage = true

-Dtangosol.coherence.cluster = CLUSTER_NAME

-Dtangosol.coherence.clusteraddress = 224.1.1.1

-Dtangosol.coherence.clusterport = 12346

最佳答案

一致性要求群集中至少有一个启用存储的服务器。您启动的缓存服务器未启用存储。

例如,在一致性安装的。\ bin目录中,有一个coherence.cmd/sh默认情况下未启用存储。您可以运行cache-server.cmd来启动启用了存储的缓存服务器。然后,在另一个窗口中运行coherence.cmd以启动第二个禁用存储的服务器。

或者,您可以编辑coherence.cmd以将“设置storage_enabled=false”更改为“ set storage_enabled=true”。然后,您应该能够从coherence.cmd命令提示符下将数据放入缓存中。

或者:您可以使用(-Dtangosol.coherence.distributed.localstorage=true)在其中一个虚拟机中启用本地存储。

如果它不起作用,则可能是内存问题“内存不足,无法加载任何其他数据”。

10-06 03:29