gpt4 book ai didi

java - LocalCache Guava ,优化更高的吞吐量

转载 作者:行者123 更新时间:2023-12-04 01:46:18 26 4
gpt4 key购买 nike

我使用的是 guava 库中的 CacheBuilder 和 LocalCache,但有一些性能问题 p99.9 getAllPresent 延迟大约 300-400 毫秒。p99 和 p99.9 之间的请求延迟几乎翻了一番(p99 约为 150 毫秒)

使用以下配置:refreshAfterWrite 为 120 秒,maxsize 设置为 2e6,有效期为 24 小时,初始容量为 1e6。没有使用 removeListener 也没有 expireAfterWrite。 ConcurrencyLevel 256(尝试了不同的值)。机器有12个核心。在使用缓存时,它有 8e5 到 1.2e6 个条目。p99.9 上大约 3k 个 key 和大约 100 qps 的使用模式是 getAllPresent。

Key 是 hashCode 的复杂对象,Objects.hash 方法与那里提供的所有字段一起使用。我尝试了不同的哈希函数来确保分布是均匀的(murmur3 显示了类似的结果)。所以,问题不在于碰撞。

关于如何调整它以提高性能的任何指示?

最佳答案

我会说在 Java 中 99%tile 是 90%tile 的两倍并且 99.9%tile 是 99%tile 的两倍是有效的。如果您看到这种模式,您将需要降低整体操作成本以减少延迟,即不太可能有一些速效方法可以帮助您。

注意:当你有一个大的缓存并扫描它时,你可以预期每个条目都涉及至少一个或两个 L3 缓存未命中。这将是昂贵的。对于适合您的 CPU 缓存的小型缓存,这会快很多倍。

我会使用分析器来减少此操作的 CPU 和内存分配,或者更改调用缓存的方式来执行您需要的操作,这也会降低 99.9% 的图 block 。

关于java - LocalCache Guava ,优化更高的吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24378231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com