Giter VIP home page Giter VIP 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         # 无过期时间
      host: localhost:9000  # 目标服务host
      labels:
        namespace: f005
        type: gateway
      profileConfigs:       # 使用默认配置 

    server2:
      interval: 10s
      expiration: 168h      # 过期时间7天
      host: 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

profiler's People

Contributors

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

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.