【发布时间】:2019-11-23 12:08:34
【问题描述】:
我有一个带有 4 个主机(4 个 CPU,32 GB 内存)的 couchbase 集群。
该集群被数千个从中获取数据的进程使用。我在集群上有 8K 永久连接(来自 couchbase ui 的数据)。
couchbase 使用的带宽是每台主机 50MB/s 来发送数据(看起来不是很重)。
但我得到客户端超时。大约每秒 4 次,我不明白为什么。
我将每个主机的 somaxconn 和 tcp_syn_backlog 设置为 2048,但它并没有改变什么。
你有什么想法吗?
从 cmets 编辑:
我的客户有这样的日志:
来自 Couchbase 的错误,以非阻塞模式传递(EXC: Key=u'fieldmetadata', RC=0x17[客户端超时 超过操作。检查网络状况或增加 超时],操作错误,结果 = 1,C 来源=(src/multiresult.c,316),跟踪 输出={“字段元数据”:{“我”:15890195098182236653, “s”:“kv:未知”,“b”:“MetaDataV3”,“r”: "ltg-aus-couchbase-3:11210", "t": 2500000}}>)
我的集群中有 3 个节点。所有客户端和集群都在 Azure VM 上。
【问题讨论】:
-
您使用的是什么语言以及哪个版本的 Couchbase Server 和 SDK?您可以发布应用程序的调试日志吗?
-
FWIW,如果是 Java...a) 升级 SDk 和 b) 检查垃圾收集暂停。这是两种最常见的超时解决方案。不是说没有其他的,只是容易排除。
-
它与python一起使用。 Couchbase 5.5 服务器和 couchbase==2.5.8 for python
-
好的,我们还需要更多信息来帮助调试...您有来自客户端的日志吗?还要确保您在多个线程中尽可能多地重复使用相同的客户端对象,而不是不断地创建和销毁它。你用的是哪个python框架?此外,8k 连接本身并不表示存在问题,但这与您拥有的应用程序实例的数量相符吗?
-
超时可以是客户端、网络或服务器...排除它的快速方法是捕获数据包并查找超时的请求。到达服务器需要多长时间,响应需要多长时间等。如果它到达服务器然后很长时间没有回来,我们可以调查服务器性能......如果它去服务器又很快回来,我们可以调查SDK/应用程序。
标签: couchbase