Giter VIP home page Giter VIP logo

autopprof's Introduction

autopprof

PkgGoDev

Pprof made easy at development time.

Guide

Add autopprof.Capture to your main function.

import "github.com/rakyll/autopprof"

autopprof.Capture(autopprof.CPUProfile{
    Duration: 30 * time.Second,
})

Run your program and send SIGQUIT to the process (or CTRL+\ on Mac).

Profile capturing will start. Pprof UI will be started once capture is completed.

See godoc for other profile types.

Why autopprof?

autopprof is a easy-to-setup pprof profile data collection library for development time. It highly depends on the standard library packages such as runtime/pprof and the existing tools such as go tool pprof.

Collecting and visualizing profiling data from Go programs is a multi-step process. First, you need to collect and write the collected data to a file. Then you should use the go tool pprof tool to analyze and visualize.

autopprof makes it easier to collect and start the pprof UI with a one-line configuration. It collects profiles once the process is triggered with a SIGQUIT and starts the pprof UI with the collected data. Since it does signal handling and starting the browser, it is only recommended at development-time.

For production cases, please see the runtime/pprof and net/http/pprof packages.

autopprof's People

Contributors

achoarnold avatar rakyll 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

autopprof's Issues

Cannot start pprof UI: exit status 1

Hi,
Thanks for really helpful project.
I tested autopprof on Ubuntu 18.04.1 LTS with go 1.10.4, but got the error Cannot start pprof UI: exit status 1.
I changed your code a little bit to use exec.CombinedOutput() and got this message from stderr: invalid port number: strconv.Atoi: parsing "": invalid syntax.
I also tried to run this pprof command go tool pprof -http=: /tmp/profile-673928358 and got the same error so it seems we have to use a specific port for go tool pprof -http rather than just :.

My suggestion is we can just use a fixed port, it should be simple enough.
Thanks

Explain use case

Hey, nice project!

I am new to the Golang profiling world.
I was unsure what was the difference between standard pprof and autopprof.
After trying your example I think I understand the advantages of your project:

autopprof allows you to manually start the profiling at any arbitrary moment and for any specified duration.
As opposed to pprof which starts at the beginning of the program and can only be stopped manually (i.e. SIGINT) or when the program ends.

Did I get that right?
Your tool is very useful for newcomers, I think adding an explanation of the advantages of autopprof in the README would be helpful.

Add screencast

A reference workflow as a screencast is required to demonstrate how the library works end to end.

Windows support

Any plans to add Windows support as SIGQUIT is not supported on Windows?

Add supported profiles

Hi,
I try to contribute by adding more supported profiles (we need that as it was written in the comment) such as goroutine, block, allocs, mutex.
Essentially, I just call Lookup("profilename").WriteTo(w, debug) for each of them.
I'm not ready to submit the PR, as I'm not quite sure if the additional example that I put together for goroutine is sufficient.
Here is what I put together https://github.com/elumbantoruan/autopprof/tree/features/moresupportedprofiles
Appreciate for any feedback and suggestion

Unused dependency in go.sum

After running go mod tidy Docker dependency was removed from go.sum:

github.com/docker/docker v1.13.1 h1:5VBhsO6ckUxB0A8CE5LlUJdXzik9cbEbBTQ/ggeml7M=

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.