net/http/pprof

pprof包通过它的HTTP服务端提供pprof可视化工具期望格式的运行时剖面文件数据服务

package main
import (
     _ "net/http/pprof" 
    "net/http"
)
func main() {
    http.ListenAndServe("localhost:8082", nil)
}

只需要导入 包"net/http/pprof" 即可,其余的工作就是进行性能查看了

方式 1 你可以在浏览器中输入 http://localhost:8082/debug/pprof/

image.png

方式 2 查看周期30秒的CPU性能切面

go tool pprof http://localhost:8082/debug/pprof/profile

image.png

方式3 查看堆切面

go tool pprof http://localhost:8082/debug/pprof/heap

方式 4 查看go协程阻塞切面

go tool pprof http://localhost:8082/debug/pprof/block


安装可视化工具

第一步 先升级rvm

先替换下载镜像 https://lug.ustc.edu.cn/wiki/mirrors/help/brew.git

以此执行下面的指令

rvm autolibs read-only

curl -L get.rvm.io | bash -s stable 

source /Users/xujie/.rvm/scripts/rvm

查看版本

ruby -v

第二步 安装

brew install graphviz

image.png


可视化工具2

git clone https://github.com/brendangregg/FlameGraph.git

进入下载好的文件夹中

cd /Users/xujie/FlameGraph 

执行下面命令

 cp flamegraph.pl /usr/local/bin

查看是否安装成功

flamegraph.pl -h

image.png

安装 go-torch

go get -v github.com/uber/go-torch

image.png

  go-torch -u http://localhost:8082/login

压力测试

工具在这里 https://github.com/adjust/go-wrk

git clone git://github.com/adeven/go-wrk.git 
cd go-wrk
go build

image.png

请确保将go build 编译后的执行文件 放在系统go/bin文件夹中,并且保证您的环境变量配置正确

配置演示如下

xudeMacBook-Air:~ xujie$ export GOPATH=/Users/xujie/go
xudeMacBook-Air:~ xujie$ export GOBIN=$GOPATH/bin
xudeMacBook-Air:~ xujie$ export PATH=$PATH:$GOBIN

下面我们看一下这个压力测试工具怎么使用

go-wrk [flags] url

 -H="User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;": the http headers sent separated by '\n'
    -c=100: 最大连接数
    -k=true: if keep-alives are disabled
    -i=false: if TLS security checks are disabled
    -m="GET": the http request method
    -n=1000: the total number of calls processed // 启动的协程数
    -t=1: the numbers of threads used // 线程数量
    -b="" the http request body
go-wrk -c=400 -t=8 -n=100000  http://localhost:8080/index.html

image.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 工作区介绍

    1.一个代码包可以有多个以.go为扩展名的源码文件组成如下,demo1.go demo2.go 和 main.go 都属于代码包main,注意同一个目录下的.g...

    酷走天涯
  • 协程

    比如你的双手可以同时做两件事,比如吃饭这件事就是并发,吃饭这个过程中,可以同时吃几种菜,甚至喝汤,这个过程就是一个多任务并发的过程,但是并发在时间上是不能同时进...

    酷走天涯
  • 如何创建库源码文件

    util 是存放date.go time.go 的目录 但是包不见得就是util 因为声明的包名可以和文件夹的名字不一致,但是规范的做法最好是一致的

    酷走天涯
  • Spring MVC之基于xml配置的web应用构建

    直接用SpringBoot构建web应用可以说非常非常简单了,在使用SpringBoot构建后端服务之前,一直用的是Spring + SpringMVC基于xm...

    一灰灰blog
  • 漫谈闭包

    按照这个标准,一阶行动者一般做一件事在10的量级,二阶行动者成功的完成了10的2次方,三阶行动者则表示把一件事情持续行动到10的3次方,四阶行动者 ,就过于宏大...

    stormwen
  • 微软超融合私有云测试31-SCCM2016部署之前提条件准备、SQL部署

         微软System Center四大核心套件,SCCM、SCVMM、SCOM、SCDPM,接下来我们部署最后一个重要的套件SCCM,SCCM具有资产管理...

    SuperDream
  • 私有云泛滥 如何采用云整合加强安全性

    海量的私有云基础架构可能会对你的组织造成危害。专家Ed Moyle将讨论如何以及何时考虑使用云整合来减少云泛滥。 对大部分组织来说,云的采纳具有十分重要意义。尽...

    静一
  • 聊一聊 Spring Security 密码加密方案 | 继续送书

    2011 年 12 月 21 日,有人在网络上公开了一个包含 600 万个 CSDN 用户资料的数据库,数据全部为明文储存,包含用户名、密码以及注册邮箱。事件发...

    江南一点雨
  • 使用python去除HTML中标签的几种

    py3study
  • 在Apache Kudu上对时间序列工作负载进行基准测试

    自2015年开放源代码发布Apache Kudu以来,它自称是用于对快速数据进行快速分析的存储。其常规任务包含许多不同的工作负载,但是增长最快的用例之一是时间序...

    大数据杂货铺

扫码关注云+社区

领取腾讯云代金券