`
孤烟客
  • 浏览: 9850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Perftools拾遗

阅读更多

                                                                  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库存在问题的可能性非常大。

  • 大小: 142.5 KB
  • 大小: 79.9 KB
  • 大小: 71.5 KB
分享到:
评论

相关推荐

    google-perftools下载

    《Google Perftools:优化Nginx的利器》 在当今的互联网环境中,服务器性能的优化至关重要,尤其是在处理高并发请求的Web服务器如Nginx上。Google Perftools是Google开发的一套强大的性能分析和内存管理工具,它...

    google perftools性能分析工具说明

    google perftools 性能分析工具说明 Google Perftools 是一个功能强大的 Linux 系统性能检测工具,它可以通过采样方式对程序中的 CPU 使用情况进行“画像”,从而帮助开发者对程序的性能进行优化。下面是 Google ...

    google-perftools-1.8.2.tar.gz

    《谷歌性能工具google-perftools详解》 在深入探讨`google-perftools-1.8.2.tar.gz`这一工具之前,我们先来了解一下它的基本背景。`google-perftools`是谷歌公司开源的一款高性能的系统监控和分析工具,主要用于C++...

    谷歌的google-perftools-1.7.zip

    谷歌的`google-perftools`是一个强大的性能分析和内存管理工具包,主要为C++开发者设计,用于提高程序的性能并有效地管理内存。这个1.7版本的zip文件包含了源码和其他相关文件,使得开发者可以在自己的项目中集成和...

    google-perftools-1.8.3-1.el6.x86_64.rpm

    google-perftools-1.8.3-1.el6.x86_64.rpm

    google-perftools.rar

    Google Perftools是一款由Google开发的性能分析和内存管理工具包,主要包含tcmalloc(Thread-Caching Malloc)和CPU、内存等性能剖析器。tcmalloc是一种高效的内存分配器,它通过优化内存分配和回收过程来提高系统...

    google-perftools-1.6.tar.gz

    《谷歌性能工具google-perftools 1.6详解》 谷歌性能工具(Google Performance Tools,简称gperftools)是一款由Google开发的开源性能分析和内存管理工具集,旨在帮助开发者优化C++程序的性能。在本文中,我们将...

    rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件.zip

    rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件 Rack::PerftoolsProfiler使用 perftools.rb 配置机架兼容应用的中间件快速启动假定应用程序使用 Rails 3 ( 你已经在下一节中安装了需求...

    perf tools p0

    【标题】"perf tools p0" 指的是性能优化工具包的第一部分,可能是针对某个特定的软件或系统进行性能分析和调优的工具集合。在这个场景中,“perf”是性能分析工具的缩写,通常用于Linux环境中,用于收集和分析系统...

    google-perftools 源码 (一款针对 C/C++ 程序的性能分析工具)

    google-perftools 简介 google-perftools 是一款针对 C/C++ 程序的性能分析工具,它是一个遵守 BSD 协议的开源项目。使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析,本文将重点介绍如何进行 CPU...

    google-perftools-开源

    谷歌Perftools是一款由Google开发并开源的性能分析和内存管理工具套件,它提供了对C++应用程序的深度性能优化支持。标题中的“开源”意味着这个工具是免费且公开源代码的,允许开发者查看、使用、修改以及分发其源码...

    perf-tools.zip

    perf-tools.zip压缩包包含了perf工具的源代码和相关资源,为开发者提供了详尽的性能分析功能。 perf工具的核心功能主要分为以下几个方面: 1. **采样分析**:perf支持事件采样,通过周期性地记录特定事件(如CPU...

    使用google-perftools优化nginx在高并发时的性能的教程(完整版)

    标题中的“使用google-perftools优化nginx在高并发时的性能的教程(完整版)”指的是一个详细的指南,旨在教导读者如何利用Google的性能分析工具google-perftools来增强Nginx在处理高并发请求时的性能。这个过程涉及到...

    perf tools jre2

    标题“perf tools jre2”指的是使用perf性能分析工具针对Java运行环境(JRE)的第二个版本进行优化和调试的相关内容。perf是Linux系统中一个强大的性能分析工具,它可以用来剖析程序的性能瓶颈,帮助开发者优化代码...

    perf tools jre1

    标题“perf tools jre1”和描述中的关键词“perf”暗示了这可能与Java性能分析工具有关,尤其是针对JRE(Java Runtime Environment)1版本的。Perf是Linux操作系统中一个强大的性能分析工具,主要用于收集和分析系统...

    perf tools p1

    标题中的"perf tools p1"可能是指一个关于性能分析工具的系列教程或文档的第一部分,主要关注"perf"工具。"perf"是Linux系统中一个强大的性能分析工具,用于收集和分析系统的各种性能数据,包括CPU周期、指令、缓存...

    perf tools p2

    "perf tools p2" 是一个关于性能分析工具的专题,主要关注的是名为 "perf" 的工具,它在Linux操作系统中广泛用于系统性能分析。perf是一款强大的命令行工具,能够帮助开发者和系统管理员深入理解程序的运行行为,...

    perftools.rb:gperftools用于Ruby代码

    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 用法(在...

    perf tools p3

    "perf tools p3" 是一个专注于性能分析的工具集,主要应用于Linux系统,它提供了丰富的功能来帮助开发者和系统管理员深入理解程序运行时的行为。Perf是Linux内核自带的一套性能事件采样工具,其设计目标是提供一种...

Global site tag (gtag.js) - Google Analytics