• 欢迎访问佰阅部落
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Statsviz:一款Go程序实时运行状态可视化工具

开发工具 佰阅 2年前 (2021-08-30) 2150次浏览

众所周知,Go语言的垃圾回收机制,内存自动回收,不需开发人员管理,这点在开发中一般是无感知状态,实际开发中也很少遇到内存溢出问题,不过在处理高并发数据的时候,偶尔会感知一点内存回收的动作。Statsviz在mian函数嵌入一个goroutine,就可以实现实时查看程序运行状态,包括GC, MemStats等等。

0. 使用教程

安装:

go get github.com/arl/statsviz

然后在你的main函数嵌入以下代码即可:

statsviz.RegisterDefault()
go func() {
    log.Println(http.ListenAndServe("localhost:6060", nil))
}()

启动程序后,在浏览器访问 http://localhost:6060/debug/statsviz/即可查看效果

1. 实现原理

主要分为两部分,前端部分是一个数据展示页面,也就是图形化页面,数据来源于后端的runtime.ReadMemStats方法,通过ws模式与前端交互,后端定时获取runtime运行时的状态参数。与我们之前接触的云探针一个原理。

2. 不足或改进

可能该项目的开发者比较擅长后端开发,前端UI布局实在一般,实际上完全可以做成单屏幕自适应布局。从体验而言,基本上heap所占用的实时内存是我们最关注的,其余的数据变化不大,或许可以使用归一化或者标准化,将其映射到便于比较的尺度。

3. 开源地址

https://github.com/arl/statsviz


佰阅部落 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Statsviz:一款Go程序实时运行状态可视化工具
喜欢 (0)