背景:
此系统功能上大抵分为两部分,一个是Web的管理平台,其二是定时检测、路由、转换发送报文的后端功能。系统主要计算在后端功能。管理平台的使用量很小,基本是配置及状态查看。
现象:
在测试数据中,处理5万单的文件。据相关开发人员描述,系统内存泄漏,系统运行越来越慢。
查看:
由开发人员提供的函数执行时间统计表来看,函数的平均执行时间并没有明显的降低。(此处开发人员将关注点放在了总时间)
经过使用工具查看,系统的内存使用持续增加,一直没有回落,两个小时内一直稳定在2G左右。
思路:
1、内存稳定2G不再增长,有可能是测试数据量的问题,也可能是内存使用基准就是2G,后续基本不再增长。
所以,最好再增长数据量做一次测试,以进一步确认。
2、假设内存泄漏,那么通过查看堆栈信息。由jvisualvm.exe查看实例数量统计,发现除了integer,char[]等基础类型数量非常大。而与系统有关的类的实例很少,或者处在循环中,有稳定的波动。
联想到可能有程序员定义全局的字段,导致一直累加增长。
通过关键字查找,未发现有此类现象。
再查看列表,除了基础数据类型多之外,HashMap及HashMap$Entry的实例也很多,达到百万个实例。通过查看工程代码,使用到Map的地方一般都在函数内的局部变量,不可能造成这么多的实例。
最后采用随机的方式,查看Map所关联的实例,发现都与HQLParser有对象相关。
由此联想到,可能是开发时,一些SQL或者HQL采用拼字符串的方式,且没有使用占位符。猜想Hibernate内部可能对这些SQL/HQL的语句进行一些缓存。导致HashMap的实例量剧增。
(最后通过测试,证实确实是此问题。错误的开发习惯导致的性能问题不是重点,重点是记录一些查找问题的过程与思路)
分享到:
相关推荐
在查找性能瓶颈时,通常遵循一个从易到难的顺序:首先是服务器硬件瓶颈,接着是网络(对局域网而言可能不重要),然后是服务器操作系统参数配置,再是中间件如数据库和Web服务器的参数配置,最后是应用层面的问题,...
本资源“软件性能测试过程详解与案例剖析-高清”深入探讨了这一主题,旨在帮助测试人员和开发人员理解性能测试的重要性,掌握其实施步骤,并通过实际案例加深理解。 性能测试的主要目标是评估软件在高并发、大数据...
【软件工程招聘系统案例分析】 本报告旨在深入探讨软件工程中的一个实际应用——在线招聘...通过这个案例,我们可以看到如何运用软件工程理论来解决实际问题,以及如何在实践中不断优化和完善系统,以满足用户的需求。
性能分析是企业级应用系统软件不可或缺的一部分,对于业务操作的响应时间和并发数的要求非常高。只有经过不断的调整优化,才能达到资源的最大利用率,满足客户对系统吞吐量和响应时间的要求。应用系统本身的优化是至...
因此,数据库优化、缓存策略、多线程处理等技术的应用对于提升系统性能至关重要。 9. **扩展性与可维护性**:考虑到未来可能的需求变化,系统设计应具备良好的扩展性和可维护性。模块化的设计允许添加新的功能或...
《711352图书借阅管理系统开发案例》是一个典型的IT项目,旨在设计和实现一个用于图书馆管理的软件系统。这个系统的核心功能是帮助图书馆管理员有效地管理图书资源,跟踪图书借阅情况,并为读者提供方便的借阅与归还...
AIX 的内存管理对于系统性能至关重要。这一章节首先引入了 AIX 内存管理的基本概念,特别是针对 AIX 5.3 版本中的内存管理特性进行了详细介绍。 **1.1.2 AIX 虚拟内存管理器 (VMM)** AIX 的虚拟内存管理器 ...
在“C++数据库管理系统开发集成案例分析”中,我们探讨的核心技术主要集中在如何利用C++这一强大编程语言来设计和实现高效、稳定的数据库管理系统。C++以其面向对象的特性、性能优势以及丰富的库支持,成为了开发...
在这个经典的“信息发布系统”案例中,我们将深入探讨如何利用ASP.NET的核心特性实现一个功能完善的发布信息平台。 一、系统架构与设计 1. **三层架构**:典型的ASP.NET信息发布系统通常采用三层架构,包括表现层...
- 数据库连接池和查询优化也是提升系统性能的关键,合理利用索引和批量操作可以显著减少数据库访问时间。 6. **安全性与权限控制** - 如果系统涉及到多个用户,可能需要设计登录注册功能,实现用户身份验证。C#中...
本文将通过一个关于JVM问题定位的具体案例来探讨如何有效地诊断并解决这些问题。 #### 二、案例背景 本案例涉及的是Oracle公司针对MySQL数据库中InnoDB存储引擎的改进工作。其中,重点介绍了一种新的写入提前日志...
### 一、嵌入式系统C++性能优化的重要性 在嵌入式系统开发中,C++是一种广泛使用的编程语言,因为它提供了高效能和对底层硬件的直接访问能力。然而,在资源受限的环境下(如内存限制、处理器速度等),为了达到最优...
4. **临时文件清理**:通过遍历特定的系统目录(如`%temp%`),可以找到并清理临时文件,提高系统性能。 5. **启动项管理**:利用Registry类访问注册表,可以查看和管理启动项。用户可以通过这个工具添加或移除开机...
此外,同学录管理系统的源码被详细注释,这为学习和理解C#编程语言的人们提供了一个极好的案例。通过阅读这些源码,初学者可以更直观地了解如何构建一个实际的系统,以及如何将理论知识应用于实践中。而注释的详尽...
然而,我可以根据给出的标签“互联网系统案例以及改进要求”来讨论一些互联网系统的常见问题和改进策略。 互联网系统是现代企业不可或缺的一部分,它们通常包括Web服务器、数据库、应用程序接口(API)、网络安全设备...
5. 测试案例:提供一系列测试用例,验证系统的功能正确性和性能。 6. 性能分析:对系统的运行时间和空间复杂度进行评估,分析其在大数据量下的表现。 7. 实际应用:讨论系统在实际生活或工作中的应用场景。 通过...
《Oracle DBA手记:数据库诊断案例与性能优化实践》是一本专为Oracle数据库管理员(DBA)编写的实战指南,旨在帮助读者深入理解和掌握Oracle数据库的诊断技巧以及性能优化方法。书中涵盖了一系列真实的数据库问题...