一:使用go pprof工具
1、 因为对应的程序带web服务,所以直接在代码引入包即可
_ "net/http/pprof"
2、因为程序是跑在容器里面,所以需要为该负载配置service 或者 ingress对外服务, 并购买弹性ip,以便自己电脑能直接访问
3、配置好,启动服务后,浏览器直接访问https://弹性ip:port/debug/pprof/ 可以直接访问
4、通过工具查看内存情况
go tool pprof -inuse_space https+insecure://弹性ip:port/debug/pprof/heap
go tool pprof -alloc_space https+insecure://弹性ip:port/debug/pprof/heap
5、查看cpu情况 , 下面命令进入交互窗口,top查看前10的,list 对应的方法,可以看到对应的代码
go tool pprof -alloc_space https+insecure://弹性ip:port/debug/pprof/profile
6、pprof还有很多有用的命令,需要逐个去看和选择合适的, 有些需要安装其他的工具才能使用。
二:使用jmeter进行压力测试。
1、下载解压直接可以运行,不需要安装
2、新建测试计划
3、新建线程组, 这里对应配置用户数、发送的请求数等策略
4、新建http request,这里配置对应的服务ip 端口 uri, encoding (UTF-8),BODY数据等
5、新建HTTP Header Manager,这里可以配置对应的头信息
6、其他就是建一些结果的看板了,graph result等
剩下的就是一边压测,一边查看程序cpu、内存数据了。
内存alloc消耗很大, inuse很小, 考虑使用内存池之类的sync.Pool ,来减少临时内存的分配。