pprof包文檔說通常,導入包只是為了防止注冊其 HTTP 處理程序的副作用。處理的路徑都以 /debug/pprof/ 開頭。文檔說,如果你已經運行了一個http服務器,你不需要啟動另一個,但如果你沒有使用DefaultServeMux,你將不得不向你正在使用的mux注冊處理程序。難道我不應該總是使用一個單獨的端口來表示 pprof 嗎?是否可以使用我用于普羅米修斯指標的相同端口?
1 回答

MM們
TA貢獻1886條經驗 獲得超2個贊
net/http/pprof
是一個方便的包。它總是在 上注冊處理程序,因為它是一個全局變量,它實際上可以做到這一點。DefaultServeMux
DefaultServeMux
如果你想在其他一些地方提供pprof結果,那真的沒什么;它所需要的只是調用一個,然后睡覺,或者調用一個對象。你可以看看net/http/pprof的來源,看看它是如何做到的。ServeMux
runtime/pprof.StartCPUProfile(w)
http.ResponseWriter
p.WriteTo(w, debug)
runtime/pprof.Profile
在稍微好一點的宇宙中,將有一個可以在任何地方使用的函數,您將能夠導入它而無需隱式注冊任何內容,并且將有另一個包(例如)除了調用它之外什么都不做。然而,我們并不生活在那個宇宙中。net/http/pprof
RegisterHandlers(*http.ServeMux)
net/http/pprof/sugar
pprof.RegisterHandlers(http.DefaultServeMux)
init
- 1 回答
- 0 關注
- 189 瀏覽
添加回答
舉報
0/150
提交
取消