github地址: https://github.com/google/gops
1.安装
go get -u github.com/google/gops
go install github.com/google/gops
如果运行install成功,应该生成在%GOPATH%/bin/下面
生成一个gops
文件。
2.将被监控的golang程序中加入gops监控代码,也就是在main函数的开头加入
if err := agent.Listen(agent.Options{
ShutdownCleanup: true, // automatically closes on os.Interrupt
}); err != nil {
log.Fatal(err)
}
下面是一个例子:
package main
import (
"log"
"time"
"github.com/google/gops/agent"
)
func main() {
if err := agent.Listen(agent.Options{
ShutdownCleanup: true, // automatically closes on os.Interrupt
}); err != nil {
log.Fatal(err)
}
time.Sleep(time.Hour)
}
3.运行gops
文件
root@ima-ThinkPad-W540:~/go/bin# gops
971 1 snapd unknown Go version /usr/lib/snapd/snapd
25277 25265 docker-containerd unknown Go version /usr/bin/docker-containerd
24492 22550 TixId_Middleware_Go * go1.9.2 /tmp/go-build125135358/command-line-arguments/_obj/exe/TixId_Middleware_Go
17690 25277 docker-containerd-shim unknown Go version /usr/bin/docker-containerd-shim
18849 25277 docker-containerd-shim unknown Go version /usr/bin/docker-containerd-shim
17727 25277 docker-containerd-shim unknown Go version /usr/bin/docker-containerd-shim
17718 25277 docker-containerd-shim unknown Go version /usr/bin/docker-containerd-shim
18046 25277 docker-containerd-shim unknown Go version /usr/bin/docker-containerd-shim
18842 25265 docker-proxy go1.10.3 /usr/bin/docker-proxy
17974 25265 docker-proxy go1.10.3 /usr/bin/docker-proxy
17612 25265 docker-proxy go1.10.3 /usr/bin/docker-proxy
26795 8405 gops go1.9.2 /root/go/bin/gops
17680 25265 docker-proxy go1.10.3 /usr/bin/docker-proxy
18029 25265 docker-proxy go1.10.3 /usr/bin/docker-proxy
17653 25265 docker-proxy go1.10.3 /usr/bin/docker-proxy
27663 27579 margo go1.9.2 /home/ima/.config/sublime-text-3/Packages/GoSublime/bin/margo
22550 29232 go go1.9.2 /usr/local/go/bin/go
27735 27579 gosublime.margo_r18.07.22-1_go1.9.2.exe go1.9.2 /home/ima/.config/sublime-text-3/Packages/User/GoSublime/linux-x64/bin/gosublime.margo_r18.07.22-1_go1.9.2.exe
27693 27663 margo.sublime go1.9.2 /root/go/bin/margo.sublime
25265 1 dockerd go1.10.3 /usr/bin/dockerd
上面带有*
的,代表程序中加入了gops的监控代码,也就是上面main函数中加入的,譬如上面的* go1.9.2
使用参看:https://github.com/google/gops
gops memstats (<pid>|<addr>)
To print the current memory stats, run the following command:
$ gops memstats (<pid>|<addr>)
譬如:(只有带有*
的才能使用下面的命令,譬如* go1.9.2
对应PID 24492)
root@ima-ThinkPad-W540:~/go/bin# gops memstats 24492
alloc: 4.24MB (4448880 bytes)
total-alloc: 33.63MB (35259760 bytes)
sys: 16.01MB (16787704 bytes)
lookups: 1079
mallocs: 343056
frees: 321287
heap-alloc: 4.24MB (4448880 bytes)
heap-sys: 11.22MB (11763712 bytes)
heap-idle: 4.91MB (5144576 bytes)
heap-in-use: 6.31MB (6619136 bytes)
heap-released: 176.00KB (180224 bytes)
heap-objects: 21769
stack-in-use: 800.00KB (819200 bytes)
stack-sys: 800.00KB (819200 bytes)
stack-mspan-inuse: 89.51KB (91656 bytes)
stack-mspan-sys: 128.00KB (131072 bytes)
stack-mcache-inuse: 13.56KB (13888 bytes)
stack-mcache-sys: 16.00KB (16384 bytes)
other-sys: 1.90MB (1994640 bytes)
gc-sys: 596.00KB (610304 bytes)
next-gc: when heap-alloc >= 8.49MB (8899696 bytes)
last-gc: 2018-11-20 12:22:23.672900069 +0800 CST
gc-pause-total: 1.358234ms
gc-pause: 111965
num-gc: 13
enable-gc: true
debug-gc: false
root@ima-ThinkPad-W540:~/go/bin#