GaussDB(DWS)集群中寻找节点 CPU 占用高的语句
本文分享自华为云社区《GaussDB(DWS) gs_cpuwatcher.sh 脚本如何寻找CPU占用高语句》,作者:fighttingman。
【工具名称】
gs_cpuwatcher
【功能描述】
寻找集群内节点占用 CPU 高的语句
【使用场景】
CPU sys 使用率高
业务整体慢
【参数说明】
无
【使用方法】
直接后台执行命令
nohup sh gs_cpuwatcher.sh > cpuwatcher.log 2>&1 &
执行之前注意事项:
使用 omm 用户(线下)或者 Ruby 用户(线上)执行
将脚本放到一个磁盘空间充足的目录执行,防止把磁盘空间占满,脚本监控会产生日志,占用磁盘空间,磁盘空间最好大于 20G
监控完之后 kill 这个监控进程,防止忘记这个脚本造成监控日志一直上涨,脚本默认保留 3 天的日志
脚本只有在进程的 cpu 使用率大于 100(多核累加和)的时候才会进行查询 cpu 高的语句
【最佳实践 &结果分析】
执行监控命令之后,检查当前目录生成的监控日志
查看日志 cpu_watch_xxx.log 日志,里边有记录占用 CPU 高的语句
日志里边记录了 cpu 占用高的语句,例如上图中 select * from pg_class a, pg_class,脚本默认截取 sql 的前 50 个字符,可以对截取字符串进行修改,需要修改脚本
字段解释:
dur :执行时长
start:sql 的起始时间
state_change:sql 状态改变时间
usename:用户名称
datname:连的数据库名称
query_id:sql 的唯一标识 id
pid:线程 id
client_addr:客户端连的 ip
state:sql 的执行状态
lwtid:线程小号
wait_status:等待视图中的等待状态字段
substr:sql 字段
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/14527e2ef3f5f8c9e493b4907】。文章转载请联系作者。
评论