diff --git a/bin/collect-profiles.sh b/bin/collect-profiles.sh index e1f80cd32..ca336e51b 100644 --- a/bin/collect-profiles.sh +++ b/bin/collect-profiles.sh @@ -8,6 +8,11 @@ tmpdir=$(mktemp -d) export PPROF_TMPDIR="$tmpdir" pushd "$tmpdir" +IPFS_BIN=$(which ipfs) +if [[ -e "$IPFS_BIN" ]]; then + cp "$IPFS_BIN" ipfs +fi + echo Collecting goroutine stacks curl -o goroutines.stacks "http://$HTTP_API"'/debug/pprof/goroutine?debug=2' diff --git a/docs/debug-guide.md b/docs/debug-guide.md index 9ef046a47..170e58254 100644 --- a/docs/debug-guide.md +++ b/docs/debug-guide.md @@ -15,6 +15,11 @@ When you see ipfs doing something (using lots of CPU, memory, or otherwise being weird), the first thing you want to do is gather all the relevant profiling information. +There's a script (`bin/collect-profiles.sh`) that will do this for you and +bundle the results up into a tarball, ready to be attached to a bug report. + +If you feel intrepid, you can dump this information and investigate it yourself: + - goroutine dump - `curl localhost:5001/debug/pprof/goroutine\?debug=2 > ipfs.stacks` - 30 second cpu profile @@ -26,10 +31,6 @@ profiling information. - system information - `ipfs diag sys > ipfs.sysinfo` -Bundle all that up and include a copy of the ipfs binary that you are running -(having the exact same binary is important, it contains debug info). - -You can investigate yourself if you feel intrepid: ### Analyzing the stack dump