gperftools 分析应用程序性能 £神魔★判官ぃ 2022-05-24 05:41 324阅读 0赞 * 1.安装libunwind库 * 2.安装google-perftools * 3.为google-perftools添加线程目录 * 4.修改tomcat启动文件startup.sh * 6.分析日志 * 7.btrace gperftools是Google提供的一套工具,其中的一个功能是CPU profiler,用于分析程序性能,找到程序的性能瓶颈。 # 1.安装libunwind库 # 可以从[http://download.savannah.gnu.org/releases/libunwind][http_download.savannah.gnu.org_releases_libunwind]下载相应的libunwind版本,这里下载的是libunwind-0.99-beta.tar.gz,安装过程如下 [root@localhost home]#tar zxvf libunwind-0.99-beta.tar.gz [root@localhost home]# cd libunwind-0.99-beta/ [root@localhost libunwind-0.99-beta]#./configure [root@localhost libunwind-0.99-beta]#make [root@localhost libunwind-0.99-beta]#make install [root@localhost libunwind-0.99-beta]#make clean # 2.安装google-perftools # 可以从[https://github.com/gperftools/gperftools][https_github.com_gperftools_gperftools]下载相应的google-perftools版本,这里下载的是google-perftools-2.5.tar.gz,安装过程如下: [root@localhost home]# tar zxvf google-perftools-2.5.tar.gz [root@localhost home]# cd google-perftools-2.5/ [root@localhost google-perftools-2.5]# ./configure [root@localhost google-perftools-2.5]# make [root@localhost google-perftools-2.5]# make install [root@localhost google-perftools-2.5]# make clean [root@localhost google-perftools-2.5]# echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf [root@localhost google-perftools-2.5]# ldconfig 至此,google-perftools安装完成。 # 3.为google-perftools添加线程目录 # 创建一个线程目录,这里将文件放在/tmp/tcmalloc下,操作如下: [root@localhost home]#mkdir /tmp/tcmalloc [root@localhost home]#chmod 0777 /tmp/tcmalloc # 4.修改tomcat启动文件startup.sh # 加入export LD_PRELOAD=/usr/local/lib/libtcmalloc.so 加入export HEAPPROFILE=/tmp/tcmalloc 重启tomcat,完成google-perftools的加载。 # 6.分析日志 # [root@localhost google-perftools-2.5]# /usr/local/bin/pprof --text $JAVA_HOME/bin/java /tmp/tcmalloc_21656.*.heap Total: 1774.3 MB 936.2 52.8% 52.8% 936.2 52.8% updatewindow 601.3 33.9% 86.7% 601.3 33.9% os::malloc 204.3 11.5% 98.2% 204.3 11.5% inflateInit2_ 18.0 1.0% 99.2% 18.0 1.0% init 10.8 0.6% 99.8% 10.8 0.6% readCEN 2.5 0.1% 99.9% 206.8 11.7% Java_java_util_zip_Inflater_init 0.3 0.0% 100.0% 0.3 0.0% CCalloc 0.3 0.0% 100.0% 11.4 0.6% ZIP_Put_In_Cache0 0.2 0.0% 100.0% 0.2 0.0% newEntry 0.1 0.0% 100.0% 0.1 0.0% strdup 0.1 0.0% 100.0% 0.1 0.0% _dl_new_object 0.1 0.0% 100.0% 0.1 0.0% _dl_allocate_tls 0.0 0.0% 100.0% 0.0 0.0% read_alias_file 0.0 0.0% 100.0% 0.0 0.0% _nl_intern_locale_data 0.0 0.0% 100.0% 1.6 0.1% VerifyClassForMajorVersion 0.0 0.0% 100.0% 0.0 0.0% _dl_check_map_versions 0.0 0.0% 100.0% 0.0 0.0% new_bucket 0.0 0.0% 100.0% 0.0 0.0% __new_exitfn 0.0 0.0% 100.0% 0.0 0.0% nss_parse_service_list 0.0 0.0% 100.0% 0.0 0.0% getprotobyname 0.0 0.0% 100.0% 0.0 0.0% getpwuid 0.0 0.0% 100.0% 0.0 0.0% _dl_map_object_deps 0.0 0.0% 100.0% 0.0 0.0% initialize_class_hash 0.0 0.0% 100.0% 0.0 0.0% make_class_info_from_name 0.0 0.0% 100.0% 0.0 0.0% _dl_scope_free 0.0 0.0% 100.0% 0.0 0.0% _nl_make_l10nflist 0.0 0.0% 100.0% 0.0 0.0% __nss_database_lookup 0.0 0.0% 100.0% 0.0 0.0% initLoopbackRoutes 0.0 0.0% 100.0% 0.0 0.0% JLI_MemAlloc 0.0 0.0% 100.0% 0.0 0.0% __add_to_environ 0.0 0.0% 100.0% 0.0 0.0% check_and_push 0.0 0.0% 100.0% 0.0 0.0% __tzfile_read ... 各字段的含义依次是: 1. 采样点落在该函数中的次数 2. 采样点落在该函数中的百分比 3. 上一项的累积百分比 4. 采样点落在该函数,以及被它调用的函数中的总次数 5. 采样点落在该函数,以及被它调用的函数中的总次数百分比 6. 函数名 # 7.btrace # [root@localhost btrace]#vim /opt/gperftools/btrace/samples/Wy.java import static com.sun.btrace.BTraceUtils.*; import com.sun.btrace.annotations.*; import java.nio.ByteBuffer; import java.lang.Thread; @BTrace public class BtracerInflater{ @OnMethod( clazz="java.util.zip.Inflater", method="/.*/" ) public static void traceCacheBlock(){ println("Who call java.util.zip.Inflater's methods :"); jstack(); } } [root@localhost btrace]#/opt/gperftools/btrace/bin/btrace -cp /opt/gperftools/btrace/build 17873 /opt/gperftools/btrace/samples/Wy.java | more [http_download.savannah.gnu.org_releases_libunwind]: http://download.savannah.gnu.org/releases/libunwind [https_github.com_gperftools_gperftools]: https://github.com/gperftools/gperftools
相关 性能瓶颈分析:Java应用程序中的内存泄漏 内存泄漏是Java应用程序中常见的性能瓶颈。简单来说,就是程序申请的内存没有被及时释放,导致系统可用的内存持续减少。 以下是内存泄漏可能导致的一些问题: 1. 系统响应变慢 矫情吗;*/ 2024年09月10日 12:30/ 0 赞/ 16 阅读
相关 性能之颠-应用程序性能技术 5.2 应用程序性能技术 本节讨论了一些提高应用程序性能的常用技术:选择I/O 大小、缓存、缓冲区、轮询、并发和并行、非阻塞I/O 和处理器绑定。参考应用程序文档看看这些 刺骨的言语ヽ痛彻心扉/ 2022年11月05日 03:30/ 0 赞/ 118 阅读
相关 今日笔记!——分析Java应用性能 1 问题描述 因产品架构的复杂性,可能会导致性能问题的因素有很多。根据部署架构,大致的可以分为应用端瓶颈、数据库端瓶颈、环境瓶颈三大类。可以根据瓶颈的不同部位,选择相应的 Bertha 。/ 2022年10月10日 04:52/ 0 赞/ 159 阅读
相关 Python程序的性能分析指南 分析一个程序的性能,总结下来就是要回答4个问题: 1. 它运行的有多快? 2. 它的瓶颈在哪? 3. 它占用了多少内存? 4. 哪里有内存泄漏? 接下来,我们会着手 迈不过友情╰/ 2022年08月10日 00:39/ 0 赞/ 151 阅读
相关 gperftools 分析应用程序性能 1.安装libunwind库 2.安装google-perftools 3.为google-perftools添加线程目录 4.修改tomcat启动文件 £神魔★判官ぃ/ 2022年05月24日 05:41/ 0 赞/ 325 阅读
相关 性能测试工具CPU profiler(gperftools)的使用心得 最近因为要研究一个算法的优化问题,需要找一款工具对程序进行性能分析,于是想到了google的性能分析工具gperftools的CPU profiler,本文记录CPU prof 墨蓝/ 2022年04月18日 02:24/ 0 赞/ 2411 阅读
相关 cmake:gperftools性能分析工具find libprofiler 脚本暨profiler的静态连接问题 [gperftools][]是一个很好用的性能分析工具,但没有提供官方的用于查找profiler库的cmake脚本,所以在基于cmake管理的项目中如果要在系统查找libpro 蔚落/ 2022年04月18日 02:08/ 0 赞/ 316 阅读
相关 利用Splunk做应用程序的性能分析 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 在我们的开发过程中,经常会需要对我们开发的程序做性能分析 ﹏ヽ暗。殇╰゛Y/ 2022年01月14日 16:47/ 0 赞/ 203 阅读
相关 gperftools源码分析和项目应用 - CPU Profiler gperftools源码分析和项目应用 - CPU Profiler 原文:https://blog.csdn.net/yubo112002/article/detail 清疚/ 2021年12月12日 12:11/ 0 赞/ 166 阅读
还没有评论,来说两句吧...