登录
首页 >  Golang >  Go问答

分析 Go fasthttp/router 应用程序的方法

来源:stackoverflow

时间:2024-03-12 21:54:26 355浏览 收藏

大家好,今天本人给大家带来文章《分析 Go fasthttp/router 应用程序的方法》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

我想分析一下我的 go http 服务器应用程序,看看是否有可以优化的地方。我正在将 fasthttp 包与 fasthttp/router 包一起使用,并且我正在努力弄清楚如何连接 pprof

基本设置如下所示,显然非常精简:

func main() {
    flag.parse()

    r := router.new()
    r.get("/", index)
    r.get("/myroute", myroutefn)

    h := r.handler

    if err := limitedlistenandserve(*addr, fasthttplogger.tiny(h)); err != nil {
        log.fatalf("error in listenandserve: %s", err)
    }
}

首先,我尝试遵循像这样的相当简单的指南,除了相应的导入之外,还在我的 main() 函数(根据指南)中添加了这一行。这将上面的内容更改为:

func main() {
    flag.Parse()

    r := router.New()
    r.GET("/", index)
    r.GET("/myroute", myrouteFn)

    h := r.Handler

    if err := limitedListenAndServe(*addr, fasthttplogger.Tiny(h)); err != nil {
        log.Fatalf("Error in ListenAndServe: %s", err)
    }

    defer profile.Start().Stop()
}

完成此操作后,我运行了我的程序,发出了一堆我感兴趣的分析请求,然后终止了服务器。这创建了一个 cpu.pprof 文件,但是当我通过 go 工具 pprof 命令运行它来生成图形时,该文件是空的(零字节)。

经过更多的调查后,我发现这个要点,如果我使用完全普通的 fasthttp,我怀疑它会起作用。

尝试将其与我的应用程序结合起来,但我仍然陷入困境。从概念上讲,我认为解决方案是使用 fasthttpadaptornet/http/pprof 转换为 fasthttp 路由。但我正在研究的要点是使用它自己的路由器来进行多路复用,我宁愿不使用我的服务器中的不同路由器重写所有路由。

我该如何在此处提供分析数据?


正确答案


您可以使用 net/http/pprof 进行分析。
fasthttp 提供了相同的自定义 implementation。您可以使用与 net/http/pprof 相同的内容。

要使用它,请将处理程序注册为:

import "github.com/valyala/fasthttp/pprofhandler"

...

r.get("/debug/pprof/{profile:*}", pprofhandler.pprofhandler)

然后您可以使用它来进行分析。

go tool pprof http://host:port/debug/pprof/profile

或者您也可以访问 http://host:port/debug/pprof/ 查看更多类型的个人资料。

理论要掌握,实操不能落!以上关于《分析 Go fasthttp/router 应用程序的方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>