为了账号安全,请及时绑定邮箱和手机立即绑定

Apache Ignite 2.7.0 在 GridFutureAdapter.get0()

Apache Ignite 2.7.0 在 GridFutureAdapter.get0()

守着一只汪 2022-11-10 16:19:52
我正在使用具有以下设置的 Apache Ignite:2 个服务器形成一个集群,其中配置了多个 Ignite 缓存REPLICATED模式。还有 10 个 Java 进程作为客户端连接到 Apache Ignite 集群并从这些缓存中获取数据。在使用 VisualVM 分析客户端 JVM 时,我发现客户端几乎一半的时间都在阻塞在以下行上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() ,因为在我的情况下,初始加载后缓存中不会有更新?
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

通常这是预期的,因为您至少需要等待网络将缓存值传递到您的客户端节点。REPLICATED缓存模式意味着每个密钥都存在于每个服务器节点上,但仍需要一些时间才能将其拉到客户端节点。



查看完整回答
反对 回复 2022-11-10
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信