pprof.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. date >>"${pprofdir}/.pprof.log" 2>&1
  26. go tool pprof -http=0.0.0.0:${port} ${pprofdir}/${pft}.prof >>"${pprofdir}/.pprof.log" 2>&1 &
  27. if [[ "${changeflag}" = "" ]]; then
  28. echo "${cf}"
  29. fi
  30. changeflag=${cf}
  31. else
  32. sleep 1
  33. fi
  34. done
  35. }
  36. openpprof() {
  37. port=$1
  38. pft=$2
  39. if [[ -e "${pprofdir}/${pft}.prof" ]]; then
  40. pprofhttp ${port} ${pft} &
  41. else
  42. echo "${pprofdir}/${pft}.prof" not exist
  43. fi
  44. }
  45. echo > "${pprofdir}/.pprof.log"
  46. openpprof 8181 "cpu"
  47. openpprof 8282 "mem"
  48. sleep 1
  49. cat "${pprofdir}/.pprof.log"