新手问题 golang内存检测工具

themoonstone · 2016年10月27日 · 最后由 sheepbao 回复于 2016年11月09日 · 31 次阅读

在所有编程语言中、内存问题都是大家无法忽视的、golang 也不例外、目前最为大家所熟知的 golang 的内存检测工具应该是 pprof、不过在我们的生产环境中使用 pprof 时会遇到一些问题:

  • 1、接受分析请求的 profilers HTTP 处理程序需要将其自身附加到应用程序的 HTTP 服务器(或有一个正在运行),这意味着应采取额外的安全措施来保护侦听端口。
  • 2、定位和访问应用程序节点主机以运行 go 工具 pprof 可能在容器环境(例如 Kubernetes)中很棘手。
  • 3、如果应用程序崩溃或无法响应 pprof 请求,则无法进行内存分析。
  • 4、如果要具有堆分配的历史堆栈跟踪视图,需要定期手动 pprof 执行,对交互式结果进行分析和比较。

使用 Stack Impact 能有效的避免上述问题并且可以进行自动内存泄漏检测和分析 (这点很强大) 不多说、直接看看用法 Stack Impact 的安装使用很简单、步骤如下:

  • 1、进入 stackimpact.com. 获取一个 agent key
  • 2、go get github.com/stackimpact/stackimpact-go

以下是一个简单的实例:

package main

import (
    "fmt"
    "net/http"

    "github.com/stackimpact/stackimpact-go"
)

func handler(w http.ResponseWriter, r *http.Request) {
    res, err := http.Get("https://jsonplaceholder.typicode.com/posts")
    if err == nil {
        defer res.Body.Close()
    }

    fmt.Fprintf(w, "Loaded some data from some API!")
}

func main() {
    // StackImpact initialization
    agent := stackimpact.NewAgent()
    agent.Configure(agent key here", "Some Go Server")

    // Start server
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

感兴趣的同学可以进入官网深入了解 官网地址:https://stackimpact.com/

原文链接:https://stackimpact.com/blog/memory-leak-detection-in-production-go-applications/

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

赞一个

收藏了。感谢分享。

学习了

最近刚学习 pprof,赞

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册