jeprof命令报错:The first profile should be a remote form to use /pprof/symbol

原创 吴就业 482 1 2024-01-22

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/94b58d50b39943189fd7b34ced3ab73d

作者:吴就业
链接:https://wujiuye.com/article/94b58d50b39943189fd7b34ced3ab73d
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

jeprof命令报错:The first profile should be a remote form to use /pprof/symbol,如下:

Using local file 2.heap.
The first profile should be a remote form to use /pprof/symbol

这是因为命令需要程序源文件(原二进制文件)。

另外FATAL ERROR: Did not specify profile file错误也是一样的问题。

如果是java项目,可以这样:

jeprof --show_bytes --gif /usr/bin/java --base=1.heap 2.heap > ./3.gif

如果是go项目,那就是编译后的可执行文件:

jeprof --show_bytes --gif /usr/local/xxx/yyy/zzz --base=1.heap 2.heap > ./3.gif

错误:dot -Tgif: No such file or directory

Dropping nodes with <= 5107 B; edges with <= 1021 abs(B)
Can't exec "dot": No such file or directory at /usr/local/bin/jeprof line 2096.
| dot -Tgif: No such file or directory

这可能是依赖什么命令没有安装,所以不输出pdf,换成文本或者图片输出。

jeprof --show_bytes --text /usr/local/xxx/yyy/zzz 2.heap

输出

Total: 1021521 B
984192  96.3%  96.3%   984192  96.3% ceph::buffer::v14_2_0::create_aligned_in_mempool
22537   2.2%  98.6%    32489   3.2% ceph_mount_info::init
8224   0.8%  99.4%     8224   0.8% ceph::buffer::v14_2_0::list::refill_append_space@7a310
4128   0.4%  99.8%     4128   0.4% ceph::buffer::v14_2_0::list::refill_append_space@5c3a60
672   0.1%  99.8%      672   0.1% std::string::_Rep::_S_create@2f5e0
576   0.1%  99.9%   993096  97.2% EventCenter::process_events
416   0.0%  99.9%      416   0.0% rados_conf_read_file
384   0.0% 100.0%      384   0.0% ceph::buffer::v14_2_0::list::substr_of
288   0.0% 100.0%      432   0.0% std::basic_string::basic_string
64   0.0% 100.0%       64   0.0% prof_backtrace_impl
48   0.0% 100.0%       48   0.0% std::_Rb_tree::_M_emplace_hint_unique
32   0.0% 100.0%    12512   1.2% ProtocolV2::write_event
32   0.0% 100.0%       32   0.0% ceph::buffer::v14_2_0::ptr_node::cloner::operator@5c4f80
32   0.0% 100.0%       32   0.0% ceph::buffer::v14_2_0::ptr_node::cloner::operator@7b830
#后端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

访客 2024-07-15

执行下面的命令,仍然报这个错误,我使用的 jemalloc 版本是 5.1.0,是此版本有 bug 吗?

吴就业 2024-07-15

执行下面的命令,仍然报这个错误,我使用的 jemalloc 版本是 5.1.0,是此版本有 bug 吗?

我当时使用的是jemalloc-5.3.0这个版本。

比如你指定的二进制程序是使用arm64 cpu架构构建的(本地mac构建的),然后真正运行的二进制程序(线上运行)是amd64 cpu架构构建的。(go语言)

又或者安装的JDK版本不一样(Java语言)。

访客 2024-07-17

java 语言,安装的 jdk 版本也是一样的。。

文章推荐

markdown转html脚注问题怎么解决?

个人博客网站是用go语言开发的,markdown渲染成html使用的是blackfriday这个开源库,于是研究blackfriday支不支持脚注。

写一个Java Agent我们都会遇到的问题

“编写一个Java Agent,这个Agent包的类不能跟应用程序的类冲突,所以我们需要自定义一个类加载器去加载我们Agent包里面的所有类,现在类冲突问题解决了,但是我Agent包也无法访问应用程序里面的类,这个问题怎么解?”

go依赖的module的版本号必须是"vx.x.x"的格式

报错:no matching versions for query "v1.0"。依赖的module的版本号必须是"vx.x.x"的格式,其中'x.x.x'中的'x'是数字。

k8s容器线上排查进程突然挂掉原因

对于线上应用,出现进程自动挂掉的原因,如果可以排除因程序本身原因,那么很大可能性是因为操作系统内存不够用,进程被操作系统kill掉了。

Go项目如何远程调试

远程debug也是排查线上故障的有效手段。容器下受权限限制,需要以root启动进程,并且获得特权模式才可使用。

Java中的中断机制

中断,其实只是jvm用于唤醒因锁竞争、I/O操作、休眠等待被挂起的线程,并设置一个中断标志,我们可以利用这个标志去做一些处理。