`
dongzhecao
  • 浏览: 27923 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

记一次典型的因应用使用内存不合理而频发的性能问题

阅读更多

    做了中间件的技术支持,遇到的很多应用系统性能相关的问题;在前不久遇到的一次使集成商比较头疼的系统性能问题,经多方努力问题终于解决了,因感觉很具典型性,所以现在拿出来做个分享。

先把其环境和问题症状做个简要的描述:

    os:windows2003 32位机 物理内存:8G 4u CPU

    JDK:1.6

    web application server:apusic 5.1 sp2

    db:oracle

    应用系统:某市市民卡项目,以C#为客户端,java作服务端,应用了SSH等框架;

现场问题症状:

系统不定期宕机,最长一周,短则一上午;宕机时的JVM堆栈及进程信息见附件。显而易见宕机时有很多BLOCK进程,以及相关的资源使用情况,初步怀疑会有两种情况导致了这么多的死锁进程:

1.发生在数据库层面,数据库出现了死锁导致进程死锁;

2.因系统资源消耗殆尽,诸如内存、线程池等;

连线现场,发现宕机时系统CPU正常,内存使用99%;宕机时数据库响应正常,apusic的线程池都正常,查看了APUSIC系统日志,发现曾经有OOM异常出现过,所以基本可以排除上面第一种情况,应该是有内存溢出。开始怀疑JVM内存分配得不够大,于是查看jvm参数:-Xms1024m -Xmx1024m  -XX:MaxPermSize=128m ,现场操作系统为32位机,JVM的最大内存也应该是1.5-2G左右,所以将-Xmx1024m  稍稍调大了些,但应该不治本;

既然涉及到内存,就得分析下GC回收的情况。

      接下去几天里,让现场加了在JVM参数加了GC日志输出的参数;

      可就在刚启服务的次日,还不到一个上午时间里,系统又宕机了。系统产生了GC日志文件,用HPjmeter作为日志的分析工具,percentage of time in GC ,percentage of time in FULL GC  都超过了5%,如附件图:

曲线极其不平滑,内存瞬间暴涨从200M—1.2G只用了1分钟,然后10分钟左右以后,full gc回收了一部分内存,大概200m左右,之后在接近一个小时的时间里,回收的内存越来越少,内存占用不断上涨,后来full gc也回收不了多少内存了在最后一个小时的时间里,系统应该基本是不可用的,一直在做full gc。现场真实的应用是客户端并发上限不超过50个,不存在瞬间高并发发生,也无法用压力测试使问题重现。结合GC回收的图片分析,猜测应该是有什么操作内存申请过大,导致一下子撑死了整个中间件;
      到此为止问题基本有眉目了,接下去是要帮助伙伴定位其应用系统的问题所在;

      几种方式:
      1.通过jprofiler监控系统运行,等内存高位时分析相关的CLASS来进行定位;
      2.添加JVM参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\x.hprof,让系统在产生OOM时生成heap dump文件供分析。当然这种方式往往是可遇不可求。

      3.产生GC LOG方式,添加JVM参数 例如:-Xms30m -Xmx30m -Xloggc:c:\gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC;将会看到gc.log ;可用HPjmeter作为日志的分析工具;
      4.根据GC曲线图,计算大致时间重启服务前的7200S(2小时左右)前后,审计业务日志,由业务操作查业务代码。
最后伙伴还是在其中业务代码里找出了问题,查询报表时候,有个别报表未加过滤,导致一次性返回了大批量数据,至内存飑升!修改后运行平稳,内存稳定在200M-300M!
      解决过程虽然问题根源比较清晰,但伙伴还是提出了不少质疑,比如他们拿了WEBLOGIC做对比,同样的应用做相同操作,WEBLOGIC内存能马上回收,而在APUSIC上未能及时回收,但执行下GC回收内存还是能下来,其实GC的回收是JAVA虚拟机做的事情。此疑问差点使解决过程走弯路。

  • jvm.rar (6.5 KB)
  • 下载次数: 19
分享到:
评论

相关推荐

    环形缓冲器在频发事件中的应用

    在不使用实时操作系统的情况下,环形缓冲器成为了解决频繁事件处理的有效策略之一。 ### 环形缓冲器的概念与优势 环形缓冲器,又称循环缓冲区,是一种用于存储和管理数据流的数据结构。其核心优势在于能够高效处理...

    抗倒指数在作物抗倒性能评价中应用研究

    在现代农业科学中,作物的抗倒伏性能是一个重要的研究课题,尤其是在面对气候变化和极端天气事件频发的背景下,作物倒伏问题对农业生产的影响越来越严重。倒伏不仅会直接影响作物的产量和质量,还会增加收获的难度和...

    内存条检测软件怎么检测内存条好坏ppt课件.ppt

    因此,如果内存出现不稳定或有问题时,就会导致电脑频发死机蓝屏等现象。检测内存是否好坏的工具有很多,不过很多都是在 DOS 环境下运行的,对于一般的电脑用户来说,操作起来难度比较大。 为了检测内存是否有问题...

    电动车火灾事故频发 消防教您如何防范.docx

    1. **线路老化**:电动车使用一段时间后,其内部线路可能会因磨损而出现老化现象,导致短路,尤其是在外部温度较高的情况下,更容易引发火灾。 2. **电池短路**:电池是电动车的核心部件之一,长期使用后的电池内部...

    计算机行业动态分析:里程碑事件频发,5G应用未来已来.pdf

    标题“计算机行业动态分析:里程碑事件频发,5G应用未来已来”表明了本文档集中讨论的两个核心内容:计算机行业的最新动态以及5G技术的应用发展情况。5G作为最新一代通信技术,预计将在未来数年内对多个行业产生深远...

    设备运行记录.pdf

    而运行过程中的保养记录则能反映设备维护的及时性和有效性,预防因缺乏保养而导致的设备故障。 “操作者”一栏记录了设备的操作人员,这对于追踪设备操作规范和责任归属具有重要意义。操作者的技能水平和对设备的...

    基于结构链逆向的内存碎片文件雕刻算法.docx

    进而提出了内存碎片文件雕刻问题可以抽象为内存碎片集合到内存文件的映射问题,并设计了相应的内存碎片文件雕刻模型。 2. **基于文件对象结构链逆向的内存碎片文件雕刻算法设计**:通过对内存映像中文件对象及其...

    2017手淘性能优化.pdf

    在性能优化的过程中,团队面临着一系列问题,如页面加载缓慢、应用启动时间过长、线上性能问题频发等。这些情况直接导致客户投诉,页面响应迟缓,用户体验下降。为了应对这些问题,淘宝团队从多个维度对App的性能...

    Rational企业性能工程解决方案.pdf

    - 缺乏标准化的性能保障流程和指南,导致质量问题频发。 - 需要满足客户的高响应速度、高并发访问、大规模数据处理等需求。 - 自动化测试工具的选择和使用成为关键因素之一。 #### 二、性能测试与性能工程的区别...

    Loadrunner主要计数器.pdf

    在IT行业中,Loadrunner作为一种广泛使用的负载测试工具,被企业用于评估和优化应用性能。其中,内存监控是确保应用稳定性和性能的关键环节之一。内存问题,尤其是内存泄漏,能够引发一系列连锁反应,直接影响到应用...

    商场火灾频发应该惊醒我们的神经.docx

    3. **电路布局不当**:商场内的电路布局不合理,电线老化等问题频发,成为引发火灾的重要因素之一。 4. **易燃材料使用**:一些商场在装修过程中使用了大量易燃材料,增加了火灾风险。 5. **安全管理不到位**:商场...

    sql2005使用sa登录错误解决

    **内存优化**:密切关注应用程序中的内存使用情况,特别是那些涉及大量数据处理或递归操作的部分,确保合理管理内存资源,避免不必要的内存占用。 2. **数据库版本升级**:考虑升级到更高版本的 SQL Server 或者...

    变电站10kV综合自动化系统故障频发原因分析.rar

    1. 设备质量问题:故障频发的一个重要原因可能是设备质量不佳。部分自动化设备可能在制造过程中存在缺陷,或者在长时间运行后因磨损和老化导致性能下降。此外,不兼容或低质量的组件也可能引发系统故障。 2. 软件...

    对现实Rust应用程序安全性的实证研究

    本文旨在实证研究Rust应用程序的安全性,通过对现实世界中的Rust程序进行分析,探讨Rust开发者为何要编写不安全代码,如何正确编写不安全代码,以及Rust程序在实际应用中可能存在的内存安全问题和并发Bug。...

    计算机行业动态分析:里程碑事件频发,5G应用未来已来.zip

    计算机行业动态分析:里程碑事件频发,5G应用未来已来

Global site tag (gtag.js) - Google Analytics