摘要:本文仅仅是一个笔记。因此同样可以用观察,但是会出现无法显示函数符号的问题,注意观察最下面一行解决办法是先用记录采样数据,然后将容器内文件系统绑定到上,然后用指定符号目录。观察容器内进程使用情况目前没有办法。
本文仅仅是一个笔记。
场景 观察进程的CPU使用情况观察进程内各个函数的CPU使用情况:
sudo perf top -p
同时显示函数调用链:
sudo perf top -g -p
记录采样结果,以供后续分析,加上-g会记录调用链:
sudo perf record -g -p
读取采样结果:
sudo perf report观察容器内进程CPU使用情况
容器内的进程实际上可以在host machine上看到,ps -ef | grep
因此同样可以用perf top -p
Failed to open /opt/bitnami/php/lib/php/extensions/opcache.so, continuing without symbols
解决办法是先用perf record记录采样数据,然后将容器内文件系统绑定到host上,然后用perf report --symfs
mkdir /tmp/foo PID=$(docker inspect --format {{.State.Pid}}) bindfs /proc/$PID/root /tmp/foo perf report --symfs /tmp/foo # 使用完成后不要忘记解除绑定 umount /tmp/foo/
把上面的
你得要先安装perf-map-agent(下面有安装方法),在启动Java进程的时候添加-XX:+PreserveFramePointer参数,下面是几个用法:
perf-java-top
perf-java-record-stack
perf-java-report-stack
更多用法见官网说明。
还可以使用perf-java-flames
目前没有办法。
附录:安装方法下面讲的都是在Ubuntu 16.04系统上的安装方法。
perf安装perf
$ sudo apt install -y linux-tools-common
运行perf会出现:
$ perf WARNING: perf not found for kernel 4.4.0-145 You may need to install the following packages for this specific kernel: linux-tools-4.4.0-145-generic linux-cloud-tools-4.4.0-145-generic You may also want to install one of the following packages to keep up to date: linux-tools-generic linux-cloud-tools-generic
于是安装:
sudo apt install linux-tools-4.4.0-145-generic linux-cloud-tools-4.4.0-145-generic linux-cloud-tools-genericbindfs
到bindfs官网下载源码包(本文写是版本为1.13.11)。
先安装编译需要的工具:
sudo apt install -y cmake pkg-config libfuse-dev libfuse2 autoconf
解压缩源码包,进入bindfs目录,编译:
./configure && make && sudo make installperf-map-agent
到github clone perf-map-agent的源码仓库。
安装JDK,你之后要监测的程序都得用这个JDK启动,这个JDK也用来编译perf-map-agent。用apt安装openjdk的方法见下面。
编译:
cmake . make # will create links to run scripts in /usr/local/bin sudo bin/create-links-in /usr/local/bin安装openjdk
sudo apt-get install -y openjdk-8-jdk
通过这种方式安装是没有JAVA_HOME环境变量的,因此我们要自己设置一个,查找openjdk的安装路径:
dpkg-query -L openjdk-8-jdk
将发现结果写到~/.bashrc里:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64FlameGraph
到github clone FlameGraph的源码仓库。
到~/.bashrc设置环境变量:
export FLAMEGRAPH_DIR=
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77577.html
摘要:本文是关于我如何应用基本性能分析技术,借助火焰图做了一处小改进,使得我们计算机集群的状况获得了倍的改善,并在第二年帮助节省了几百万刀。最终,通过对平均大小在的事件进行批量插入,我们的吞吐量获得了的提高。 本文是关于我如何应用基本性能分析技术,借助火焰图做了一处小改进,使得我们 Postgres 计算机集群的 CPU 状况获得了 10 倍的改善,并在第二年帮助 Heap 节省了几百万刀。针对用...
摘要:什么是火焰图怎么用以下会为你一一解答。工具包标准分析器,用于生成系统堆栈信息提供转换成带标示的代理生成火焰图的工具生成全部进程的堆栈信息还有一些问题很多方法都是缺少的,对比起,在图里的堆栈信息可能只有的深度。 什么是FlameGraph火焰图?怎么用?以下会为你一一解答。 Lets Go! 1.结论 如果能生成出来对应图表,分析java使用cpu性能很好用。 但是有时生成出来的堆栈...
阅读 2333·2021-09-30 09:47
阅读 2951·2019-08-30 11:05
阅读 2528·2019-08-29 17:20
阅读 1915·2019-08-29 13:01
阅读 1723·2019-08-26 13:39
阅读 1226·2019-08-26 13:26
阅读 3207·2019-08-23 18:40
阅读 1815·2019-08-23 17:09