查找昂贵查询的 Couchbase 所有者 (CPU)

Find Couchbase Owner of Expensive Query (CPU)

我们在 Couchbase 集群上遇到 CPU 峰值问题。有谁知道有什么好的技术可以追踪 who/what 是造成这种情况的原因吗?

到目前为止我得到的最好结果是轮询 admin/vitals,如果 CPU 超过某个阈值,则转储 admin/active_requests。这会给我们一些指示,说明是什么原因造成的。

有什么方法可以找到哪个用户与昂贵的查询相关联吗?

目前(Couchbase 4.6.0),completed_requests/active_requests 日志不显示查询的来源,因此无法正常获取该信息。一种愚蠢但可行的跟踪方法是向每个查询添加一个虚拟参数,该参数将包含一些识别信息,如应用程序或用户 ID。

例如SELECT * FROM bucket WHERE field="value" AND "myapp"="myapp" 或参数化查询,其中虚拟参数名称标识源,并计算为 true ,如下所示: SELECT * FROM bucket WHERE field="value" AND $myapp 并将 true 传递给 $myapp

现在您可以在 completed_requests 中找到来自特定来源的所有查询,或者找出活动查询的来源。