因此,testrunner
过于复杂,cbloadworkgen
没有给出请求时间,而 mcsoda
似乎无法与 membase 协议(protocol)一起工作(因此memcached 直接测试 - 完全避免集群层)。
还有吗?或者有什么已知的方法可以使用其中一种工具来真正让 couchbase 长凳? 我需要为 99%、95% 的请求计时。
最佳答案
您指的是开发还是生产服务器场景? Couchbase 延迟本身不会成为瓶颈 - 它基本上只是网络延迟和导致延迟的应用程序堆栈(例如 PHP)。
我使用 weighttp 工具主要测试开发场景中可能的请求/秒 - 该工具还应该为您提供每个 HTTP 请求的平均延迟。你可以find my setup on GitHub.它使用真正的 HTTP 请求来调用 gwan C-servlet 进行多个 CB 查询。
如果您想了解如何使用 couchbase 实现最佳延迟和吞吐量:
- 使用 libcouchbase 使用 native 异步代码。 PHP、NodeJS、Java.. 它们都是生产堆栈中的真正瓶颈。
- 异步允许保持多个 couchbase 查询在运行中 - 这样延迟可以“并行发生” - 最终用户只会注意到轻微的改进,服务器负载将会减少
- 确保您的应用使用连接池。您不想为您正在服务的每个用户请求初始化连接!上面的 servlet 是一个粗略的实现。
- 如果可能,将 couchbase 实例保存在本地。我正在运行一个集群,其中每个节点都在运行我的应用程序服务器和一个 couchbase 实例,并且每个 cb 节点都有自己的存储桶来缓存可以缓存的东西(比如配置)。如果您的备份需求不是那么严格,您可以使用 XDCR——不需要自动故障转移到实时副本。如果你运行 2 个节点和 1 个副本,这将意味着你的 key 空间的 50% 在另一台机器上。
- 如果数据集很大,请务必使用 SSD。
通过这种方式,您可以获得令人难以置信的性能,如果使用像样的本地节点(i7 4770k、32 GB DDR3-1600)、240 GB SSD,在德国这里大约 75 美元/月)和一点点,则可以达到每秒 300.000 次如果在集群中则更少(不确定为什么)。这是我使用上述测试基准运行的 8 节点 CouchBase 设置(带有 24 个额外的负载生成器节点):
结论是:不用担心 couchbase 本身。只需担心您自己的应用架构/代码及其延迟。一件事是,CouchBase 知道魔法——另一件事是即使它“坏”了——你很难用其他产品获得更好的延迟。
关于memcached - 什么可以用于(可靠地)测试 Couchbase 延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964044/