我使用Astyanax编写的客户端使用默认配置测试单节点Datastax Cassandra 2.0。
在我的场景中,有一个CF,每行包含密钥(解析为字符串的自然数)和一列,保留1kB的随机文本数据。
客户端执行插入行的操作,直到数据大小达到50GB。它的速度为3000 req / sec,这对我来说足够了。 下一步是读取所有这些数据,其顺序与插入顺序相同。而这里出现问题。让我们看看我的程序生成的示例日志:
reads writes time req/sec
99998 0 922,59 108
100000 0 508,51 196
100000 0 294,85 339
100000 0 195,99 510
100000 0 137,11 729
100000 0 105,48 948
100000 0 105,83 944
100000 0 76,05 1314
100000 0 71,94 1389
100000 0 63,34 1578
100000 0 63,91 1564
100000 0 65,69 1522
100000 0 1217,52 82
100000 0 725,67 137
100000 0 502,03 199
100000 0 342,17 292
100000 0 336,83 296
100000 0 332,56 300
100000 0 330,27 302
100000 0 359,74 277
100000 0 320,01 312
100000 0 369,02 270
100000 0 774,47 129
100000 0 564,81 177
100000 0 729,50 137
100000 0 656,28 152
100000 0 611,29 163
100000 0 589,29 169
100000 0 693,99 144
100000 0 658,12 151
100000 0 294,53 339
100000 0 126,81 788
100000 0 206,13 485
100000 0 924,29 108
吞吐量不稳定,而且相当低。
我对任何帮助感兴趣,这可能会缩短阅读时间。 我也可以提供更多信息。
感谢您的帮助!
库巴
答案 0 :(得分:0)
我猜你正在按顺序进行阅读。如果你并行执行它们,你应该能够每秒执行更多操作。
更新以解决单一读取延迟:
读取延迟可能受以下变量的影响:
有些工具可以帮助您回答这些问题,其中一些
特定于Cassandra和其他一般系统性能工具。看看吧
Cassandra记录GC暂停和丢弃的请求。看看nodetool cfstats
查看延迟统计数据。使用nodetool cfhistograms
检查延迟分布,
每次读取的sstables数量和行大小分布。使用nodetool tpstats
检查已删除的请求和队列大小。
您还可以使用iostat
和vmstat
等工具查看磁盘和系统利用率统计信息。