为什么Apache Ignite Cache.replace-K-V-V api调用执行缓慢?

为什么Apache Ignite Cache.replace-K-V-V api调用执行缓慢?,ignite,distributed-caching,Ignite,Distributed Caching,我们在openjdk上运行Ignite集群,其中12个节点在Ignite 2.7.0上运行 1.8在RHEL平台 看到与你一起度过的沉重时光https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/IgniteCache.htmlreplace-K-V-V- 我们正在见证我们的一个过程的缓慢,当我们试图钻它的时候 进一步分析JVM,主要的罪魁祸首占用了约78%的总时间 似乎来自Ignite缓存。repalceK,V,V

我们在openjdk上运行Ignite集群,其中12个节点在Ignite 2.7.0上运行 1.8在RHEL平台

看到与你一起度过的沉重时光https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/IgniteCache.htmlreplace-K-V-V-

我们正在见证我们的一个过程的缓慢,当我们试图钻它的时候 进一步分析JVM,主要的罪魁祸首占用了约78%的总时间 似乎来自Ignite缓存。repalceK,V,V api调用。 在替换的77.9%中,GridCacheAdapater.equalVal占39%,38.5% 通过GridCacheAdapter.put

缓存是分区的和原子的,readThrough、writeThrough、writeBehindEnabled设置为True

附加一个节点的分析快照类似于其他节点上的分析结果,是否有人可以检查并提出建议 可能是与cache.replacek,v,v api相关的此Ignite版本的原因或某些已知性能问题


一个节点的快照

我猜它可能与下一个问题有关:

该问题与在包含该密钥的前一批更新将存储在数据库中之前对同一密钥的操作有关

正如我所见,它应该被添加到Ignite 2.8中

更新:

我测试了所有的操作。从下面两张图片中,您可以看到putAll正在等待GridCacheWriteBehindStore.write包含updateCache的两个不同线程:

public void write(Entry<? extends K, ? extends V> entry) {
    try {
        if (log.isDebugEnabled())
            log.debug(S.toString("Store put",
                "key", entry.getKey(), true,
                "val", entry.getValue(), true));

        updateCache(entry.getKey(), entry, StoreOperation.PUT);
    }

并且提供的问题可能会影响您的put操作或替换操作。

谢谢@Andrei。您是否了解有关此票证将如何影响缓存的更多详细信息。请更换以降低速度。事实上,当我进一步扩展分析结果时,我看到时间被划分为GridCacheAdapater.equalVal和GridCacheAdapter.put,而这两个变量似乎不会在分析结果中的任何位置调用GridCacheWriteBehindStore.updateCache。请查看更新后的答案。你看不到它,因为有两个不同的线程。不过,您可能会看到另一个与当前JIRA罚单无关的问题。感谢Andrei提供更多的见解,这可能就是原因。希望Ignite开发社区的人能够确认这一点。