亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang:如何在 Web 服務器中使用 pprof 獲取計算時間

Golang:如何在 Web 服務器中使用 pprof 獲取計算時間

Go
斯蒂芬大帝 2021-12-20 15:46:36
我已經構建了一個 Web 服務器并進行了ab(apache 基準測試)測試?,F在我想知道每個部分的計算時間。我使用go tool pprof url:port/xxx并獲取了該程序的配置文件,但它沒有告訴我計算時間(只有內存)。以下是結果:(pprof) top101827.59MB of 1978.12MB total (92.39%)Dropped 175 nodes (cum <= 9.89MB)Showing top 10 nodes out of 48 (cum >= 43.50MB)  flat  flat%   sum%        cum   cum%  769.54MB 38.90% 38.90%   769.54MB 38.90%  reflect.unsafe_New  459.08MB 23.21% 62.11%   459.08MB 23.21%  services/semanticnew.TopicProbCounter.Update  189.17MB  9.56% 71.67%  1081.21MB 54.66% github.com/golang/protobuf/proto.(*Buffer).dec_slice_struct  122MB  6.17% 77.84%      122MB  6.17%  github.com/golang/protobuf/proto.(*Buffer).dec_int32  107.56MB  5.44% 83.28%   107.56MB  5.44% github.com/garyburd/redigo/redis.(*conn).readReply  68.13MB  3.44% 86.72%   527.21MB 26.65%  services/semanticnew.caculApPoiScore  40.51MB  2.05% 88.77%    40.51MB  2.05%  runtime.malg  28.59MB  1.45% 90.22%    28.59MB  1.45%  net/http.newBufioWriterSize  22.50MB  1.14% 91.35%       23MB  1.16%  redismanage.(*Manager).getRequest  20.50MB  1.04% 92.39%    43.50MB  2.20%  redismanage.(*Manager).GetRequest在我的網絡程序中,我添加了以下代碼:f, _ := os.Create("x.cpuprofile")pprof.StartCPUProfile(f)defer pprof.StopCPUProfile()但它仍然不起作用。我已經檢查了http://blog.golang.org/profiling-go-programs,但該xxx.prof文件讓我感到困惑。我怎樣才能生成這個xxx.prof文件?而作者使用的go tool pprof xxx xxx.prof,是不是就是那個xxx生成的二進制文件xxx.go?無論如何,目標是獲得計算時間,但是如何呢?我是否必須生成此xxx.prof文件才能實現此目標?非常感謝
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

我從這里使用 Dmitry 的建議取得了成功:https : //software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs


您只需要導入 net/http/pprof,并使用以下命令收集配置文件:


$ go tool pprof --text mybin http://myserver:6060:/debug/pprof/profile


net/http/pprof 僅為其副作用而導入,因此您可以使用


import (

   ...

   _ "net/http/pprof"

)

除了“mybin”和“myserver”,您還需要替換您的端口號并刪除端口號后面的冒號。例如,對于我的寵物項目,命令是


go tool pprof http://127.0.0.1:8000/debug/pprof/profile

然后,您將創建一個 pprof 存檔,您可以通過 pprof 以交互方式探索該存檔,或者您可以使用外部工具 - 我個人更喜歡內置功能。


注意https://github.com/golang/go/issues/13841和https://github.com/golang/go/issues/6047是 pprof 和一些內核組合存在的問題。


查看完整回答
反對 回復 2021-12-20
  • 1 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號