当前位置: 首页 > 面试题库 >

无法在现有服务器上使用Go工具pprof

鱼安然
2023-03-14
问题内容

我有一个要配置的现有http服务器。我已经将_ "net/http/pprof"导入文件包括在内,并且已经在运行http服务器:

router := createRouter()
server := &http.Server {
    Addr:           ":8080",
    Handler:        router,
    ReadTimeout:    15*time.Second,
    WriteTimeout:   15*time.Second,
//  MaxHeaderBytes: 4096,
}

log.Fatal(server.ListenAndServe())

当我尝试访问http:// localhost:8080 / debug / pprof
/时,
我得到了404 page not found

这就是go tool pprof在本地计算机上使用时得到的:

userver@userver:~/Desktop/gotest$ go tool pprof http://192.168.0.27:8080/
Use of uninitialized value $prefix in concatenation (.) or string at /usr/lib/go/pkg/tool/linux_amd64/pprof line 3019.
Read http://192.168.0.27:8080/pprof/symbol
Failed to get the number of symbols from http://192.168.0.27:8080/pprof/symbol

userver@userver:~/Desktop/gotest$ go tool pprof http://localhost:8080/debug/pprof/profile
Read http://localhost:8080/debug/pprof/symbol
Failed to get the number of symbols from http://localhost:8080/debug/pprof/symbol

与远程客户端相同:

MacBookAir:~ apple$ go tool pprof http://192.168.0.27:8080/
Use of uninitialized value $prefix in concatenation (.) or string at /usr/local/Cellar/go/1.3.2/libexec/pkg/tool/darwin_amd64/pprof line 3027.
Read http://192.168.0.27:8080/pprof/symbol
Failed to get the number of symbols from http://192.168.0.27:8080/pprof/symbol

问题答案:

文档中未明确提及它,而net/http/pprof仅将其处理程序注册到http.DefaultServeMux

从来源:

func init() {
        http.Handle("/debug/pprof/", http.HandlerFunc(Index))
        http.Handle("/debug/pprof/cmdline", http.HandlerFunc(Cmdline))
        http.Handle("/debug/pprof/profile", http.HandlerFunc(Profile))
        http.Handle("/debug/pprof/symbol", http.HandlerFunc(Symbol))
        http.Handle("/debug/pprof/trace", http.HandlerFunc(Trace))
}

如果您未使用默认的多路复用器,则只需向您要使用的任何多路复用器注册所需的任何/全部,例如,诸如此类mymux.HandleFunc("…", pprof.Index)

或者,您可以使用默认的mux在单独的端口(如果需要的话,也可以绑定到localhost)上监听。



 类似资料:
  • 我尝试用java制作一个discord patchbot(数据位于动态网站上)。而应用程序在eclipse中工作,并作为。在我的桌面上,我无法让它在服务器上正常工作。服务器是sparkedhost的java服务器。 每次启动时,都会发生以下错误:

  • 开启服务 无参数 示例: HttpDemo/bin/imi server/start 停止服务 无参数 示例: HttpDemo/bin/imi server/stop 重新加载服务 重启 Worker 进程,不会导致连接断开,可以让项目文件更改生效 无参数 示例: HttpDemo/bin/imi server/reload 更新运行时缓存后,再重新加载服务 HttpDemo/bin/im

  • 我在Spring上有一个拦截器,可以拦截用户的请求。我想计算申请的持续时间并保存到数据库中。然而,Spring不会自动连接我的豆子,导致服务上的空点异常。 这是代码: 我如何避免这个NPE?

  • 我可以在我自己的电脑上使用这个程序,但是我不能在服务器上使用。 服务器使用最高权限管理员打开程序。 具有的服务器WCF HTTP激活功能。NET4。5号门开着。 服务器endpoint地址使用"http://localhost",如下所示 endpoint地址="http://localhost"绑定="basicHttpBind"bindingConfiguration="NewBinding0

  • 类名: Imi\Server\Server 服务器工具类 方法 getServer 获取服务器 $server = Server::getServer(); // 获取当前服务器 $server = Server::getServer('serverName'); // 获取指定名称的服务器 sendMessage 发送消息给 Worker 进程,使用框架内置格式 返回成功发送消息数量 // 发

  • Next.js8.0刚刚引入了一个新的配置设置,在这篇博文中有所描述。我设置了一个基本的Hello world应用程序(这里)来测试它。将的输出复制粘贴到Google Cloud Function(相当于AWS Lambda)并让它调用,如上一篇博文所述。 我遇到的问题是,页面本身呈现良好,但随后它尝试在与lambda相同的域中获取静态资产(脚本文件),这当然不起作用,因为除了lambda脚本之外