Giter Club home page Giter Club logo

profiler's Introduction

Profiler

Go Report Card codecov Build status Release status LICENSE status

English / 中文

简介

Profiler 是一个基于 go pprof 与 go trace 持续性能剖析工具

  • 支持的样本
    • trace fgprof profile mutex heap goroutine allocs block threadcreate
  • 配置热更新
    • 根据配置文件收集目标服务的样本
    • 收集程序会监听配置文件的变化,即时应用变化后的配置文件
  • 图表趋势
    • 提供图表观测多个服务性能指标的趋势,找出性能问题的时间点
    • 每一个气泡都是一份 Profile 与 Trace 的样本文件
  • 详细分析
    • 点击图表中的气泡跳转到 Profile 与 Trace 的详细页面进行进一步详细的分析
图表趋势 点击气泡跳转 Profile 详情
点击气泡跳转 Trace 详情 点击气泡跳转 Trace 详情

入门

本地

启动服务端 端口为:8080

go run server/main.go 

启动前端 端口为:80

cd ui
npm install --registry=https://registry.npm.taobao.org
npm run dev --base_api_url=http://localhost:8080

Docker

docker run -d -p 80:80 --name profiler xyctruth/profiler:latest

使用自定义的配置文件

mkdir ~/profiler-config/
cp ./collector.yaml ~/profiler-config/
docker run -d -p 80:80 -v ~/profiler-config/:/profiler/config/ --name profiler xyctruth/profiler:latest

使用持久化数据

docker run -d -p 80:80 -v ~/profiler-data/:/profiler/data/ --name profiler xyctruth/profiler:latest

Helm

安装 Profiler chart:

helm install --create-namespace -n profiler-system profiler ./charts/profiler

更多说明在 Helm docs

收集配置

需要被收集分析的 golang 程序,需要提供 net/http/pprof 端点,并配置在 ./collector.yaml 配置文件中。

配置文件可以在线更新,收集程序会监听配置文件的变化,即时应用变化后的配置文件。

collector.yaml

collector:
  targetConfigs:

    profiler-server:        # 目标名称
      interval: 15s         # 抓取间隔
      expiration: 0         # 无过期时间
      instances: ["localhost:9000"]  # 目标服务host
      labels:
        namespace: f005
        type: gateway
      profileConfigs:       # 使用默认配置 

    server2:
      interval: 10s
      expiration: 168h      # 过期时间7天
      instances: ["localhost:9000"]
      labels:
        namespace: f004
        type: svc
      profileConfigs:       # 覆盖部分默认配置字段
        trace:
          enable: false
        fgprof:
          enable: false
        profile:
          path: /debug/pprof/profile?seconds=10
          enable: false
        heap:
          path: /debug/pprof/heap

profileConfigs 默认配置

默认 trace 分析关闭, 因为 trace 文件过大,大约在(500KB ~ 2M), 需要开启 trace 分析在 collector.yaml 设置覆盖默认的 trace 配置.

profileConfigs:
  profile:
    path: /debug/pprof/profile?seconds=10
    enable: true
  fgprof:
    path: /debug/fgprof?seconds=10
    enable: true
  mutex:
    path: /debug/pprof/mutex
    enable: true
  heap:
    path: /debug/pprof/heap
    enable: true
  goroutine:
    path: /debug/pprof/goroutine
    enable: true
  allocs:
    path: /debug/pprof/allocs
    enable: true
  block:
    path: /debug/pprof/block
    enable: true
  threadcreate:
    path: /debug/pprof/threadcreate
    enable: true
  trace:
    path: /debug/pprof/trace?seconds=10
    enable: false

JetBrains OSS License

JetBrains Logo (Main) logo.

profiler's People

Contributors

dependabot[bot] avatar imgbotapp avatar roinnn avatar toozhuang avatar xilu0 avatar xyctruth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

profiler's Issues

使用 expiration 参数设置了过期时间不生效

我这边更新到最新版本 v0.3.2,测试但是数据过期时间参数还是没有生效,而且服务也不拉取数据了
针对这个设置了过期时间不生效的问题,有没有临时方案来规避这个问题啊?

优化建议:
1、对比这个工具和其他工具,感觉有一个不好的地方是,拉取同样的指标数据,磁盘占有率是其他工具的4倍
2、页面标签选择我看是 or 的关系,可以修改成 and 的关系吗?

磁盘占用过多疑问

我大概收集40多个服务,配置每分钟收集,一天大概增长10GB+。
我看每个profile文件才几kb。磁盘会占用这么多是正常的吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.