使用golang的pprof包对程序进行性能分析

程序经常出现OOM错误,然后关键字"go pprof"搜到文章<Go程序性能分析pprof>,该文章第二步说运行程序后会生成profile文件,但是编译运行后发现生成的profile文件大小一直为0,然后关键字"go pprof profile is empty"搜到文章<Golang pprof heap profile is empty>,该文章说在运行程序前添加环境变量GODEBUG="memprofilerate=1",但是好像并没有用处。

然后还是之前的关键字"go pprof"搜到文章<使用golang的pprof包对程序进行性能分析>,该文章指出"在代码中使用pprof了,实际运用中分三种情况",因为程序并非是运行一次就退出,而是作为一个服务,所以"需要开启一个goroutine来开启端口监听",然后参考文章<go内存泄露case>,注意第二步"(2)memory profile"的描述"使用--alloc_space可以显示所有分配的对象",当使用web命令时会报错"Cannot find dot, have you installed Graphviz?",然后关键字"centos Graphviz"搜到文章<Linux Centos7安装配置画图工具Graphviz>,参照该文章安装了Graphviz但是web命令依然会报错"xdg-open: no method available for opening ‘/tmp/pprof-964683453/pprof001.svg‘",不知道为什么就只好把临时的svg文件拷贝到windows下用ie来看,不理解为什么后面curl -T来拷贝时说该文件不存在。

如果程序代码中没有`import _ "net/http/pprof"`,则执行"go tool pprof  http://localhost:6060/debug/pprof/heap"会报错"server response: 404 Not Found"。关键字"inuse_space"搜到文章<golang 内存分析/动态追踪>

原文地址:https://www.cnblogs.com/wongdu2014/p/9123238.html

时间: 2024-11-10 01:05:19

使用golang的pprof包对程序进行性能分析的相关文章

[转]程序进行性能分析工具gprof使用入门

性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是要重点测试版本的性能表现和稳定性的.对于软件测试过程中发现的性能问题,如何定位有很多的方法.基本的方法可能是开发者对代码进行review,或者是使用一些工具对代码进行性能分析.常见的性能分析tuning工具有哪些呢?下面两篇文章做了详细的总结: https://computing.llnl.gov/

Linux C++程序进行性能分析工具gprof使用入门

性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是要重点测试版本的性能表现和稳定性的.对于软件测试过程中发现的性能问题,如何定位有很多的方法.基本的方法可能是开发者对代码进行review,或者是使用一些工具对代码进行性能分析.常见的性能分析tuning工具有哪些呢?下面两篇文章做了详细的总结: https://computing.llnl.gov/

ubuntu上编译和使用easy_profiler对C++程序进行性能分析

本文首发于个人博客https://kezunlin.me/post/91b7cf13/,欢迎阅读最新内容! tutorial to compile and use esay profiler with c++ on ubuntu 16.04 Guide compile git clone https://github.com/yse/easy_profiler.git cd easy_profiler && mkdir build && cd build &&

Golang使用pprof和qcachegrind进行性能监控

Golang为我们提供了非常方便的性能测试工具pprof,使用pprof可以非常方便地对Go程序的运行效率进行监测.本文讲述如何使用pprof对Go程序进行性能测试,并使用qcachegrind查看性能测试的输出文件. 载入pprof模块 想要对一个Go程序进行pprof监测,第一步是在main函数所在的模块中添加 net/http/pprof 模块.import后面的“_”是一定要加上的. import _ "net/http/pprof" 运行HTTP服务器 如果你的程序不是一个W

golang的sync包例子

package main import ( "fmt" "sync" ) var wg sync.WaitGroup func asyncTestFunc() { for i := 0; i < 100; i++ { fmt.Println(i) } wg.Done() } func main() { wg.Add(1) go asyncTestFunc() wg.Wait() } golang的sync包例子

golang的io包

package io import "io" io包提供了对I/O原语的基本接口.本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作. 因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的. Index Variables type Reader type Writer type Closer type Seeker type Re

linux系统程序安装(三)源码包安装程序

源码包安装是日常使用过程中最经常的安装方式,比如nagios套件.apche等重要软件都是源码包方式安装,源码包编译安装技术是运维技术中比较重要的部分. 一.源码包安装位置 运维时,最好把要跑的业务包放到/usr/local/src下,方便其他管理员管理代码. 转载一篇博客中的解析:(转载至https://itony.me/769.html) 二.源码安装方法 源码安装分为三个步骤:(1)./configure 定制程序的某些参数.检测系统是否具备程序运行的某些库.配置完成后,会生成mskefi

Golang Gin 项目包依赖管理 godep 使用

Golang Gin 项目包依赖管理 godep 使用 标签(空格分隔): Go 在按照github.com/tools/godep文档go get完包以后,调整项目结构为$GOPATH/src/$PROJECT_NAME/,同时使项目编译没有问题.执行godep save命令,出现了一系列包缺失的问题: github.com/campoy/embedmd github.com/client9/misspell/cmd/misspell github.com/dustin/go-broadcas

Golang官方log包详解

Golang官方log包详解 以下全是代码, 详解在注释中, 请从头到尾看 // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package log implements a simple logging package. I