golang内存检测工具

在所有编程语言中、内存问题都是大家无法忽视的、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/

已邀请:

zhqqqy - 90后it男

赞同来自:

赞一个

itfanr - @inspur

赞同来自:

收藏了。感谢分享。

lcp0578 - A PHPer

赞同来自:

学习了

sheepbao - https://sheepbao.github.io 爱go,爱编程,领域网络开发,流媒体、分布式、网络加速

赞同来自:

最近刚学习pprof,赞

要回复问题请先登录注册