Dgraph问题排查方法
Dgraph是go语言开发的,所以go语言的相关性能检测工具适合查询,同时可以借助dgraph自带的相关工具和操作系统自带的命令。
1、go语言性能检测工具pprof
(1) go tool pprof http://ip:port/debug/pprof/profile(检测cpu使用情况)
例如:go tool pprof localhost:8080/debug/pprof/profile进入命令界面
通过help可以查看输入的命令,这里常用的top命令显示默认占用CPU最多的10个函数
通过输入web命令可以将结果在浏览器中显示,更加直观,需要安装Graphviz。
(2) go tool pprof http://ip:port/debug/pprof/heap(检测堆内存使用情况)
例如:go tool pprof http://localhost:8080/debug/pprof/heap进入命令界面
同上,可以通过help查看输入的命令,输入top命令显示占用内存前10的函数
同样,可以通过web命令直观的进行显示
通过help命令,可以发现pprof的性能情况可以通过ps、svg、pdf等多种形式输出,有些形式的显示需要安装相应的依赖工具。
(3) gc垃圾收集
Golang自带gc,在不改动代码的情况下,可以设置GODEBUG=gctrace=1环境变量启动程序,来向标准错误输出打印gc log。
例如:GODEBUG=gctrace =1 ./xxxx.exe or GODEBUG=gctrace =1 go run main.go 程序将会显示gc信息
每行显示信息的含义如下:
gc 1 @2.104s 0%: 0.018+1.3+0.076 ms clock, 0.054+0.35⁄1.0/3.0+0.23 ms cpu, 4->4->3 MB, 5 MB
goal, 4 P
1 表示第一次执行
@2.104s 表示程序执行的总时间
0% 垃圾回收时间占用的百分比
0.018+1.3+0.076 ms clock 垃圾回收的时间,分别为STW(stop-the-world)清扫的时间, 并发标记和扫描的时间,STW标记的时间
0.054+0.35⁄1.0/3.0+0.23 ms cpu 垃圾回收占用cpu时间
4->4->3 MB 堆的大小,gc后堆的大小,存活堆的大小
5 MB goal 整体堆的大小
4 P 使用的处理器数量
系统内存回收信息
scvg0: inuse: 426, idle: 0, sys: 427, released: 0, consumed: 427 (MB)
426 使用多少M内存
0 剩下要清除的内存
427 系统映射的内存
0 释放的系统内存
427 申请的系统内存
具体可以查看官方文档: https://godoc.org/runtime?spm=a2c4e.11153940.blogcont573743.11.42f31815StZggq
2、dgraph自带工具
Dgraph自带一些工具进行相关信息查询,可通过官网https://docs.dgraph.io/查看相关比较详细的介绍,下面介绍 一下部分工具简单的用法。
(1) dgraph ratel
直接运行dgraph ratel工具,可以配置ip、port等参数,然后在浏览器中输入对应ip:port
localhost可以进行ip、port切换
console进行query、mutate、alter操作,输入相关命令后直接run就可以,下方会保留之前输入的命令记录,同时对于查询会显示json及图形化结果。
schema中可以进行添加谓词,查询索引,删除信息等
(2) curl ip:port/debug/vars
该curl命令可以查看dgraph中的统计信息,例如:curl localhost:8080/debug/vars
也可以通过浏览器进行显示,以json格式输出
具体每条信息所表示的含义可以查看官方文档。
3、系统自带命令
top命令查看系统内存使用情况
参考文献:
【1】https://blog.csdn.net/u012210379/article/details/50443660
【2】https://github.com/hyper0x/go_command_tutorial
【3】https://blog.csdn.net/WaltonWang/article/details/54019891
【4】https://studygolang.com/articles/2763
【5】https://my.oschina.net/u/2374678/blog/799477