插入繁重的工作负载在成为之前在Cassandra中受CPU限制 内存限制。 (所有写入都会转到提交日志,但Cassandra就是如此 写作有效,CPU是限制因素。
有些机构可以向我解释为什么I / O不是限制因素吗?我的意思是,据我所知,它首先进入I / O然后进入CPU。
我查看了This StackOverflow question或Cassndra Incubator或Apache电子邮件链,但对我来说仍不明确。
答案 0 :(得分:1)
Cassandra会记录项目,是的,那部分是I / O.但是这个日志会继续附加。因此Cassandra不需要等待硬盘搜索。看看HDD Burst写入速度 - 超过100MB / s这对我来说似乎不是一个限制因素。事实上,网络将是限制性的。但是因为你可能无法达到网络变得限制的写入速度,所以CPU限制开始了。
我希望现在这部分答案是有道理的:
来自Richard 的Explanation required for a statement in Cassandra documentation要处理插入,Cassandra需要对来自客户端的消息进行反序列化,找到哪些节点应该存储数据并向这些节点发送消息。然后,这些节点将数据存储在称为Memtable的内存数据结构中。
这最初几乎总是受CPU限制。但是,随着插入的数据越来越多,memtables会变大并刷新到磁盘并创建新的(空)memtables。刷新的memtables存储在称为SSTables的文件中。有一个称为压缩的持续后台进程将SSTables合并为逐渐变大和变大的文件。