0

我有一个程序在有内存泄漏的远程无头机器(即没有 X 服务器)上运行。我能够安装 gperftools 并运行发现泄漏的堆检查器。

我的问题是我无法在远程机器上安装 pprof,因为需要所有图形库,所以我将生成的 .heap 文件复制到另一台安装了 pprof 的机器上。这台机器也有与 rmote 机器相同的库。

我尝试运行堆检查器建议的 pprof 命令,但使用 --text 而不是 --gv

$ pprof <my_bin> <heap_file> --inuse_objects --lines --heapcheck --text

但它抱怨 curl 命令失败

Using local file <my_bin>.    
Use of uninitialized value $host in substitution (s///) at
/usr/bin/pprof line 3195. Use of uninitialized value $hostport in
concatenation (.) or string at /usr/bin/pprof line 3197. Use of
uninitialized value $prefix in concatenation (.) or string at
/usr/bin/pprof line 3197. Use of uninitialized value $host in
substitution (s///) at /usr/bin/pprof line 3195. Use of uninitialized
value $hostport in concatenation (.) or string at /usr/bin/pprof line
3197. Use of uninitialized value $prefix in concatenation (.) or string at /usr/bin/pprof line 3197. Use of uninitialized value $host
in sprintf at /usr/bin/pprof line 3364. Gathering CPU profile from
http:///pprof/profile?seconds=30 for 30 seconds to  
/home/developer/pprof/<my_bin>.1640195244. Be patient...
curl: (6) Couldn't resolve host 'http' Failed to get profile: curl
'http:///pprof/profile?seconds=30' >
/home/developer/pprof/.tmp.<my_bin>.1640195244.: No such
file or directory

所以我的问题是:我正在尝试的东西是否可能?我应该使用不同的 pprof 命令吗?curl 命令是关于什么的?

谢谢,

4

1 回答 1

0

只需使用 pprof 的 go 版本。在这种情况下,我怀疑会发生什么是 arg 解析最后并不真正支持标志(我怀疑 go 也有这个错误)。绝对支持这种使用二进制和 pprof 文件进行 pprofing 的用例。

于 2021-12-25T01:51:31.133 回答