gpt4 book ai didi

go - 使用 Gorilla 的 mux 和 net/http/pprof 分析 Go Web 应用程序

转载 作者:IT老高 更新时间:2023-10-28 13:09:34 30 4
gpt4 key购买 nike

我有一个用 Go 编写的相对较大的 Web 应用程序,它使用 Gorilla's mux用于路由。我最近意识到我的 Web 应用程序很慢,我想对 Web 应用程序进行分析。

阅读后,似乎 net/http/pprof是我需要的。但我不能让它与 mux 一起运行;即使是最简单的 Web 应用程序。

有人知道怎么做吗?

这是一个不起作用的琐碎代码示例(即在 /debug 处没有提供任何内容)。

package main

import (
"fmt"
"github.com/gorilla/mux"
"math"
"net/http"
)
import _ "net/http/pprof"

func SayHello(w http.ResponseWriter, r *http.Request) {
for i := 0; i < 1000000; i++ {
math.Pow(36, 89)
}
fmt.Fprint(w, "Hello!")
}

func main() {
r := mux.NewRouter()
r.HandleFunc("/hello", SayHello)
http.ListenAndServe(":6060", r)
}

最佳答案

我的首选方法是让 net/http/pprof 将自己注册到 http.DefaultServeMux,然后传递所有以 /debug 开头的请求/pprof/ 沿:

package main

import (
"net/http"
_ "net/http/pprof"

"github.com/gorilla/mux"
)

func main() {
router := mux.NewRouter()
router.PathPrefix("/debug/pprof/").Handler(http.DefaultServeMux)
if err := http.ListenAndServe(":6060", router); err != nil {
panic(err)
}
}

我发现这种方法比依赖于隐藏初始化方法的实现稳定得多,并且还保证你不会错过任何东西。

关于go - 使用 Gorilla 的 mux 和 net/http/pprof 分析 Go Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591065/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com