在couchbase网站上,可以看到couchbase每秒可轻松达到10万个请求。 由于我的应用程序基本上只需要键/值存储,我尝试一下couchbase。 所以我尝试在我的提供者中构建一个小集群。 我使用python客户端和Couchbase服务器2.2.0社区版。
单个节点进入“集群”:我每秒可以做16000个请求:很好! 但是当集群中有2个节点时,'set(key,val)'每秒只有100个请求,而'get(key)'则相同(我使用默认存储桶)。 这适用于非常少量的密钥:10 000个密钥,长度:仅10个字节!
查看统计数据时,似乎没有瓶颈(CPU /磁盘/ RAM)。
我的硬件:
Core i5 (3.4 Ghz)
32 GB RAM
Disk : SSD 120Go
Network : Gigabit, bandwith limited to 200 Mbps
我看到的唯一一点是,我在2个节点之间有10毫秒的延迟:
答案 0 :(得分:2)
正如您所提到的,您正在做大约100次操作/秒,如果您的网络延迟为10毫秒,这是有意义的。这也意味着您可能通过网络进行同步IO。这意味着您在发送下一个请求之前等待一个请求进行往返。 python客户端应该具有异步API,允许您发送多个请求,而无需等待响应稍后返回。这将极大地提高你可以做的操作/秒的数量。
我知道该网站提到Couchbase可以为单个节点执行100k操作/秒,但我已经达到了近250k操作/秒。真正让你失望的唯一因素是网络(在这种情况下我最大化)以及当你请求它们时内存中有多少项,因为必须转到磁盘会降低你的性能,特别是如果你只有几个与数据库的连接。
以下是您发布的问题的一些答案。
[编辑]没有理由说1个节点的性能优于2个节点。事实上,拥有更多节点应该会让您拥有更多的吞吐量。