查找昂贵查询的 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 中找到来自特定来源的所有查询,或者找出活动查询的来源。
我们在 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 中找到来自特定来源的所有查询,或者找出活动查询的来源。