在使用cassandra-stress工具从Cassandra集群中的节点读取或写入时,有一个名为no-warmup的选项。这是什么意思?
使用该选项时是否会有任何性能提升?或者它与数据的延迟有关?
答案 0 :(得分:4)
来自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的“预热”阶段测试你的延迟。