首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Ignite 2.7.0花在GridFutureAdapter.get0()上的大量时间

Apache Ignite 2.7.0花在GridFutureAdapter.get0()上的大量时间
EN

Stack Overflow用户
提问于 2019-05-08 01:22:06
回答 1查看 162关注 0票数 0

我正在使用Apache Ignite,设置如下:2台服务器组成一个集群,在REPLICATED模式下配置了几个Ignite缓存。还有10个Java进程作为客户端连接到Apache Ignite集群,并从这些缓存中获取数据。

在使用VisualVM分析客户机JVM时,我发现客户机在阻塞状态下花费了几乎一半的时间

代码语言:javascript
复制
java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:304)
    at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:178)
    at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get0(GridCacheAdapter.java:4723)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4697)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:1415)
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.get(IgniteCacheProxyImpl.java:928)
    at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.get(GatewayProtectedCacheProxy.java:640)

我知道可能需要锁来正确处理给定缓存中给定键的get()和/put()。但在我的应用程序中,我首先将所有需要的引用数据加载到Ignite缓存中,然后客户机JVM只从缓存中获取数据。这种行为(在cache.get()期间花费大量时间等待)是预期的吗?有没有办法在没有锁的情况下调用cache.get(),因为在我的例子中,在初始加载后缓存中不会有更新?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-09 00:19:13

一般来说,这是意料之中的,因为您至少需要等待网络将缓存值传递到您的客户端节点。REPLICATED缓存模式意味着每个关键字都出现在每个服务器节点上,但仍然需要一些时间才能将其拉到客户机节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56027650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档