Perftools拾遗
做为一个java程序员,堆外内存泄漏问题并不总能遇到。去年年底换公司去了一个游戏小公司。去之前就一直听说存在内存泄漏问题,但是一直不知道问题出现在哪里。由于权限,职责的原因,没能直接参与线上的问题排查。今年六月份,我负责服务器迁移,调整,使得我不得不直接参与线上问题的排查。
问题描述:在一个8核16G的常规服务器配置上,项目每隔几天就会宕机一次。在观察的过程中,我发现。java堆外内存大约以每6小时100M的速度在增长。高峰时段可能速度还会稍微快一些。这是一个棘手的问题。因为我对堆外内存并不熟悉。我们使用了netty框架,我最开始以为可能是io的问题。经查正发现我们的项目并没有使用堆外内存来提升性能。我们自己包装了jni库,会不会是jni库出了问题呢?为了验证这种猜测,我使用了Google的Perftools工具来做数据样本分析。以下为整个测试过程。
1,软件安装
下载google-perftools-master.zip ,libunwind-0.99-beta.tar.gz
a.unzip google-perftools-master.zip
b.tar -zxvf libunwind-0.99-beta.tar.gz
c.安装libunwind
① cd libunwind-0.99-beta
② ./configure
③ make
④ make install
d.安装 google-perftools-master
① cd google-perftools-master
② ./configure
③ make
④ make install
e.配置libunwind
vim /etc/ld.so.conf 添加 /usr/local/lib 保存
f.启动 /sbin/ldconfig
2,在项目启动脚本中引入
export LD_PRELOAD=/usr/local/lib/libprofiler.so:/usr/local/lib/libtcmalloc.so
export HEAPPROFILE=/data/pef/pef.out
HEAPPROFILE为配置输出文件的位置。
3,启动脚本,观察结果,可以看到诸如下面的文件列表
使用pprof 命令分析以上文件结果。
按创建对象数量查看
pprof --cum --text --alloc_objects $JAVA_HOME/bin/java pef.out_15468.0181.heap >1.txt
按分配的内存多少查看
pprof --cum --text --alloc_space $JAVA_HOME/bin/java pef.out_15468.0181.heap >2.txt
综合以上分析,可以看出我们自己包装的NavLib库存在问题的可能性非常大。
- 浏览: 9726 次
- 性别:
- 来自: 北京
最新评论
-
戢_时光:
比如ScheduledThreadPoolExecutor类, ...
java并发之ThreadPoolExecutor分析 -
05rjyzl11:
...
java并发之ThreadPoolExecutor分析
相关推荐
google-perftools-1.8.3-1.el6.x86_64.rpm
google-perftools-1.6
google-perftools-1.8.2.tar.gz工具,帮助查看堆外内存
google_perftools是谷歌的内存池代码,可以支持嵌入程序。
rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件 Rack::PerftoolsProfiler使用 perftools.rb 配置机架兼容应用的中间件快速启动假定应用程序使用 Rails 3 ( 你已经在下一节中安装了需求...
perf tools p0
非常强大的Linux系统性能检测工具。非常强大的Linux系统性能检测工具。
perf tools jre2
perf tools jre1
支持nginx优化
使用Google tcmalloc进行内存申请释放,解决内存没有真正释放
perf tools p2
google-perftools 简介 google-perftools 是一款针对 C/C++ 程序的性能分析工具,它是一个遵守 BSD 协议的开源项目。使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析,本文将重点介绍如何进行 CPU...
perf tools p1
perf tools p3
下面为大家介绍google-perftools的安装,并配置Nginx和MySQL支持google-perftools。 首先,介绍如何优化Nginx: 1,首先下载并安装google-perftools: 注意,如果是64位系统: 那么你需要做:1)先安装libunwind或者2)在...
perf 性能分析工具
perftools.rb gperftools for ruby code (c) 2012 Aman Gupta (tmm1) http://www.ruby-lang.org/en/LICENSE.txt gperftools (formerly known as google-perftools): http://gperftools.googlecode.com 用法(在...
我们见过的最快的malloc; 与线程和STL配合使用特别好。 另外:线程友好的堆检查器,堆分析器和cpu分析器。