Couchbase 集群中较慢的插入性能

Posted

技术标签:

【中文标题】Couchbase 集群中较慢的插入性能【英文标题】:Slower Insert Performance in Couchbase Cluster 【发布时间】:2013-12-03 09:13:49 【问题描述】:

我是 Couchbase 的新手。我正在使用各种 Couchbase 设置(单节点、2 节点、5 节点等)检查 INSERT 的原始性能。我在 Windows Azure 上使用 VM 进行测试,因为我没有足够的硬件来测试它在我的服务器上。我正在使用 Couchbase 提供的 .NET 客户端库来编写基于 C# 的测试应用程序,该应用程序在循环中记录插入。另外,我没有使用任何批量插入选项(如果有的话!)

以下是目前插入的结果:

在硬件服务器上记录 1000 万条记录所需的时间 - 大约 10 分钟 在 Azuere 上的 VM 服务器上记录 1000 万条记录所需的时间 - 大约 21 分钟 在 Azure 上的 2 节点 VM 群集上处理 1000 万条记录所用的时间为 63 分钟

所以这是我的问题:

可视化是否导致插入减少到硬件服务器的一半? Couchbase 2 节点集群的开销是 1 节点 Couchbase 的 3 倍是否正常?

我已按照this 文章在 Windows Azure 中设置 Couchbase 集群: Azure 上的 Couchbase

【问题讨论】:

你能分享一些你的测试应用程序的代码吗?你用什么方法插入?您的客户在哪里?客户端也可能减速? 您好,感谢您的回复。在这两种情况下都使用相同的客户端应用程序,因此客户端代码应该不是问题。如果 VM1、VM2 是我的集群的节点,则客户端应用程序在 VM1 上运行。 我在链接问题中甚至有“更好”的分布:- N 个 put 请求的延迟为 1000%,其中 N 最多占总请求的 75%。 【参考方案1】:

Couchbase 通常大量使用硬盘和 CPU 进行索引处理。 所以云中的性能下降是正常的。您可以尝试使用具有更高 IOPS 甚至 SSD 的磁盘来减少延迟。

当您的应用生成数据时,它也使用 cpu,因此(在同一虚拟机上)couchbase 性能可能会下降。为了进行更清晰的测试,我认为您应该在分离的(专用)VM(即 VM3)上运行应用程序。由于虚拟机之间的延迟,性能也会有所不同。要减少它,请尝试将虚拟机定位在一个区域(数据中​​心)中。我认为如果您为客户端使用单独的 VM,1 节点和 2 节点集群之间的差异不会那么大。

在您的情况下,1 个节点集群的性能主要取决于虚拟机和连接到该虚拟机的硬盘之间的延迟。在 2 节点集群中,性能主要取决于 VM1 和 VM2 之间的延迟,该延迟可能比 VM 和硬盘之间的延迟大 2-4 倍。因此,在您的情况下,性能将与延迟成反比。

performance_1 ~ 1 / HDD_latency_VM1
performance_2 ~ 1 / (HDD_latency_VM1 + Network_latency_2_VM2 + HDD_latency_VM2)

【讨论】:

感谢您的回复。 VM 位于同一位置。它们位于同一个数据中心、同一个子网和同一个关联组中。我再次尝试使用 3 节点集群(VM1、VM2 和 VM3,客户端在 VM1 上运行),性能比 2 节点集群差!我将尝试在单独的 VM 上运行客户端并让您知道结果。 @Vinod 如果您还测量虚拟机之间的延迟(您可以使用 oing 实用程序)看看它有什么影响,那就太好了。

以上是关于Couchbase 集群中较慢的插入性能的主要内容,如果未能解决你的问题,请参考以下文章

Couchbase KeyExistsError 替换

PHP性能调优---php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

为啥pypy3比python慢

客户端上的 Couchbase 集群更新可见性

排序算法-(冒泡选择插入算法)

2. CouchBase集群安装和配置(01)-CouchBase从0到50