coracle Coherence中的错误"服务DistributedSessions不存在启用存储的节点"

时间:2015-08-13 16:45:05

标签: java hibernate caching oracle-coherence

我使java应用程序将数据加载到分布式Cache。 应用程序加载数据很好,但是当加载超过1000万条记录时,我得到“服务DistributedSessions没有存储启用节点”错误。但是当我加载不到1000万时它运行良好。 我在Web逻辑中创建了一个集群,并按以下方式加入4个点:

•2台服务器(Storage enable = true)来存储数据

•2个客户端(存储启用= false)仅供查看和查询

Tangosol的相干-Override.xml的

 

UITraitCollection

相干缓存-config.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>

<?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>

服务器参数:

-Xms6g

-Xmx12g

-Xincgc

-XX:-UseGCOverheadLimit

-Dtangosol.coherence.distributed.localstorage =真

-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 =假

-Dtangosol.coherence.session.localstorage =真

-Dtangosol.coherence.cluster = CLUSTER_NAME

-Dtangosol.coherence.clusteraddress = 224.1.1.1

-Dtangosol.coherence.clusterport = 12346

4 个答案:

答案 0 :(得分:1)

我记得很多,localstorage = false表示要服务以避免加载数据,所以超过10 M的记录,我猜你的连贯性缺乏内存,无法加载更多的数据。尝试改变你的驱逐政策,但从我的角度来看,你本地存储可能是真的。此属性在代理上使用,以表明它们是否也可以作为服务器。

答案 1 :(得分:0)

在启用存储的服务器的Coherence缓存配置中,您需要具有DistributedSessions服务的配置。看起来您正在使用示例配置而不是真实配置。

如果它达到某一点(1000万?)然后失败,那么你需要弄清楚出了什么问题(例如启用存储的服务器上的例外?)

答案 2 :(得分:0)

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

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

或者,您可以修改coherence.cmd以更改&#34;设置storage_enabled=false&#34;到&#34; set storage_enabled=true&#34;。然后,您应该能够从coherence.cmd命令提示符将数据放入缓存中。

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

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

答案 3 :(得分:0)

我通过增加2个存储服务器的内存来解决我的问题