【问题标题】:couchbase server ops per secondcouchbase 服务器每秒操作数
【发布时间】:2014-06-21 08:55:47
【问题描述】:

我有一个问题,只是想在桶中保存一个 json 值。首先,我将值大小设置为 2 字节,并将值设置为存储桶,Web 控制台显示每秒集数为 15K,我将值大小设置为 10KB,然后设置值,每秒集数变为500,当json值变大,我在bucket上使用get和set操作也变得很慢,怎么办;我认为我可以减小值大小,但这很困难,有一些其他方法可以提高 get 和 set 运算符的速度

【问题讨论】:

  • 我们将 Couchbase 用于具有数百万个按键和非常大的结构的大型在线游戏系统,而且速度非常快。如果您遇到问题,则可能与您的集群和硬件有关。你的集群有多大?它运行在什么样的硬件上?
  • 你说的大结构是什么,能举个例子吗,我的集群大小是30G,我的服务器内存是32G
  • 一般来说,我们会尝试将结构保持在 16K 以下,这就是您所说的开始体验缓慢速度的地方。您的集群中有多少台机器,您使用的是什么编程语言?
  • 测试时我的集群中有两台机器,当产品上线时会增加十台机器,但我在Web控制台上发现最大副本数为3;真的是最大副本数是3吗?rei使用python开发产品

标签: json couchbase bucket


【解决方案1】:

您使用客户端 SDK 的操作模式是什么?为了获得最佳性能,您需要确保使用异步 getset 操作,这样您的应用程序就不会在安排下一个操作之前等待操作完成。

在 Python 中,默认的 set 方法是同步的,这意味着 SDK 将阻塞并等待服务器上的实际设置操作完成。 Python 客户端 SDK 支持 TwistedGevent 事件框架。

检查您是否已将 Couchbase 服务器最大化或瓶颈仅在客户端(我怀疑在这种情况下)是在第二个应用程序服务器上启动您的应用程序的第二个实例的一个好的、简单的测试。如果您的性能提高了,那么您就知道应用程序是瓶颈。

【讨论】:

  • 我以前在python中使用默认方法(只是同步),昨天我使用twisted,当我获取或设置方法时我发现了一个问题;只是一些运算符有返回结果,许多方法没有返回;我设置了一个变量,限制当无返回结果方法的数量为 10000 时,time.sleep(1);然后我发现当无返回结果方法的数量达到 10000 时,应用程序将始终休眠;并且 couchbase Web 控制台显示没有 get 或 set 运算符;这是为什么?
  • @user3168625 - 我建议你作为一个新问题提出这个问题 - cmets 不是一个回答的好地方。
【解决方案2】:

我们通过使用自定义转码器压缩数据克服了速度问题。特别是对于 16K+ 的较大键,这大大提高了速度。由于您使用的是 python SDK,因此您会对以下内容感兴趣: http://www.couchbase.com/autodocs/couchbase-python-client-1.2.0/html/api/transcoder.html

速度问题的另一个解决方案是尽可能进行批处理操作: http://www.couchbase.com/autodocs/couchbase-python-client-1.2.0/html/api/couchbase.html#batch-operation-pipeline

由于您的硬件看起来足够,Couchbase 推荐 4 个 CPU 内核,您还应该考虑查看您的网络接口。您需要在集群中的机器之间运行至少 1Gbps 的局域网。

【讨论】:

  • 谢谢你的回答,对我很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多