【发布时间】:2019-07-20 16:10:47
【问题描述】:
我正在尝试计算针对我的 Golang API 服务器的请求中针对数据库运行的查询数。这是为了优化 + 发现我们 API 中的瓶颈。
在 Django 中如何做到这一点的一个例子是here。
知道在 Golang 中是否有一种简单的方法可以做到这一点?
【问题讨论】:
-
expvar包专门用于应用内指标。
我正在尝试计算针对我的 Golang API 服务器的请求中针对数据库运行的查询数。这是为了优化 + 发现我们 API 中的瓶颈。
在 Django 中如何做到这一点的一个例子是here。
知道在 Golang 中是否有一种简单的方法可以做到这一点?
【问题讨论】:
expvar 包专门用于应用内指标。
据我所知,没有简单的解决方案。
您可以将您的数据库包装在您自己的结构中,然后实现Exec() 或您直接在该结构上使用的任何函数。您的函数只会调用数据库一,然后按您认为合适的方式计算它。
可以在此处找到类似的示例,但带有记录器: How to log queries to database drivers?
【讨论】:
为了找到瓶颈,我建议直接进入 MySQL 数据库并启用慢查询日志,并将 long_query_time 慢慢设置为低毫秒值。
使用pt-query-digest 之类的工具来帮助消化这些信息,以获得类似查询的频率。攻击那些需要修复的慢查询,然后设置一个较低的值。
每个查询的实际数量实际上并没有那么有用。
从整体角度解决问题时,测量每个接口的 API 响应时间将有助于您全面了解服务。
【讨论】: