【发布时间】:2023-03-27 06:43:01
【问题描述】:
在从 Cassandra 集群中的节点读取或写入时,使用 cassandra-stress 工具,有一个称为 no-warmup 的选项。这是什么意思?
使用该选项时会有任何性能改进吗?还是与数据的延迟有关?
【问题讨论】:
在从 Cassandra 集群中的节点读取或写入时,使用 cassandra-stress 工具,有一个称为 no-warmup 的选项。这是什么意思?
使用该选项时会有任何性能改进吗?还是与数据的延迟有关?
【问题讨论】:
来自 DataStax 开发者博客,特别是 Jonathan Ellis 题为 How not to benchmark Cassandra 的帖子:
针对 Cassandra 等基于 JVM 的系统的测试需要足够长的时间,以允许 JVM “预热”并将字节码 JIT 编译为机器码。 cassandra-stress 有一个“守护进程”模式,可以轻松地将热身阶段与您实际测量的结果分开;对于其他工作负载生成器,最好的办法是简单地发出足够多的请求,使预热可以忽略不计。
基本上,当您的查询在 Cassandra 上正常运行时,JVM“热身”期会在您的节点启动后不久过去。当您运行 cassandra-stress 却没有机会正确编译所需的所有内容时,您的查询延迟将出现偏差(可能更高)。
如果您有兴趣,这个问题会更多地讨论预热期、它可能导致的问题以及处理它的解决方案: Technique or utility to minimize Java "warm-up" time?
因此,指定“不预热”将有效地破坏您的测试结果。也就是说,除非您专门尝试测试在 JVM 的“热身”阶段您的延迟是多少。
【讨论】: