pprof.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. pprofdir=$1
  2. if [[ "${pprofdir}" == "" ]]; then
  3. pprofdir="/tmp/pprof"
  4. fi
  5. pprofhttp() {
  6. port=$1
  7. pft=$2
  8. # stop last process
  9. lpid=`ps -ef | grep -v grep | grep "tail -F ${pprofdir}/.${port}.pprof.running.flag" | awk '{print $2 " " $3}'`
  10. while [[ "${lpid}" != "" ]]; do
  11. kill ${lpid} >/dev/null 2>&1
  12. lpid=`ps -ef | grep -v grep | grep "tail -F ${pprofdir}/.${port}.pprof.running.flag" | awk '{print $2 " " $3}'`
  13. done
  14. # pprof.sh running flag
  15. tail -F ${pprofdir}/.${port}.pprof.running.flag >/dev/null 2>&1 &
  16. changeflag=
  17. while true; do
  18. cf=`ls -l ${pprofdir}/${pft}.prof 2>&1`
  19. if [[ "${cf}" != "${changeflag}" ]]; then
  20. lpid=`ps -ef | grep -v grep | grep "go tool pprof -http=0.0.0.0:${port}" | awk '{print $2}'`
  21. while [[ "${lpid}" != "" ]]; do
  22. kill ${lpid} >/dev/null 2>&1
  23. lpid=`ps -ef | grep -v grep | grep "go tool pprof -http=0.0.0.0:${port}" | awk '{print $2}'`
  24. done
  25. go tool pprof -http=0.0.0.0:${port} ${pprofdir}/${pft}.prof >>"${pprofdir}/.pprof.log" 2>&1 &
  26. if [[ "${changeflag}" = "" ]]; then
  27. echo "${cf}"
  28. fi
  29. changeflag=${cf}
  30. else
  31. sleep 1
  32. fi
  33. done
  34. }
  35. openpprof() {
  36. port=$1
  37. pft=$2
  38. if [[ -e "${pprofdir}/${pft}.prof" ]]; then
  39. pprofhttp ${port} ${pft} &
  40. else
  41. echo "${pprofdir}/${pft}.prof" not exist
  42. fi
  43. }
  44. echo > "${pprofdir}/.pprof.log"
  45. openpprof 8181 "cpu"
  46. openpprof 8282 "mem"
  47. sleep 1
  48. cat "${pprofdir}/.pprof.log"