我目前正在调查Cassandra的读写操作。我想知道Cassandra在memtable和sstable上执行的读写操作。Cassandra度量的最接近值是什么?我只找到了延迟指标,但这不是我要搜索的。
我更想知道有多少真正的读写操作发生在为某些特定操作构建抽象成本模型时。
谢谢您!
编辑:
所以看起来readlatency和writerelatency(表度量)是我一直在搜索的。但是,如果我想读取度量,那么读取计数总是0。
我的设置:
波波!20.04/联想p1 g2(512gb nvme ssd,16gb ram)
cassandra 3.11.7(docker容器)
datastax 4.5.1 java驱动程序
通过nodetools(一直使用docker容器内部的可执行文件)或telegraf1.15.2+jolokina1.6.2收集度量
我的telegraf配置:
[[inputs.jolokia2_agent.metric]]
name = "TableRead"
mbean = "org.apache.cassandra.metrics:keyspace=*,name=ReadLatency,scope=*,type=Table"
tag_keys = ["keyspace", "name", "scope"]
field_prefix = "$2_"
[[inputs.jolokia2_agent.metric]]
name = "TableWrite"
mbean = "org.apache.cassandra.metrics:keyspace=*,name=WriteLatency,scope=*,type=Table"
tag_keys = ["keyspace", "name", "scope"]
field_prefix = "$2_"
当通过java应用程序运行查询时,这两种方法都将表上的读取计数显示为零(写入计数器按预期递增):
ResultSet rs = cqlSession.execute("SELECT * from myTable");
for(Row r : rs) {
int id = rs.getObject("someColumn");
}
为什么读取计数器不递增?
1条答案
按热度按时间rqqzpn5f1#
cassandra中至少有两种类型的读/写度量:
本地读/写—副本执行的相应操作
客户机级读/写—如何在协调器级执行此操作。协调器级别的一个读/写转换为n个本地读/写,由一致性级别和复制因子确定
cassandra的metrics页面提供了可用指标的列表,您可以获得特定于表的指标,或者为协调器聚合的指标—您需要查看延迟指标,例如,
ReadLatency
对于表,或ClientRequests.Read
协调员。对于读取,还有其他重要的指标,比如,在读取特定表的过程中命中的sstables的数量(命中的次数越多,延迟就越差)、逻辑删除的数量等等。在主机级别上,密钥缓存命中率也非常重要。datastax有一个关于“重要指标”的单独页面,作为其最佳实践文档的一部分。