组里的美女同事在搭建性能测试环境时遭遇了OutOfMemoryError,做Java,做性能遇到OOM本是常事,不过这次的原因还是第一次碰到,分享一下我们的思路:
- 确认OOM的具体类型。 一般来讲,OOM常见的有unable to create new native thread、Out of
swap space、Java heap space、GC overhead limit execeeded、PermGen
space,不同类型的分析处理思路不同。 本次OOM是其中最为常见的一种:java.lang.OutOfMemoryError: Java
heap space
- 根据“Java heap space”类型,我的第一反应是确认JVM参数的正确性,于是让美眉check了一下Xmx参数,没问题,1536m
- 然后美眉准备用MAT分析heap dump文件(启动参数事先已设置了HeapDumpOnOutOfMemoryError),我这时注意到该dump file大小只有几十兆,于是建议放弃分析dump,意义不大
- 尝试jmap -histo多次采样来查看占用空间最多的对象类型,看到原生类型的占用较多,又是死胡同,ft
- 只好转向进一步分析应用log,在经过若干次尝试后,发现每次OOM时的stack trace很固定,都是形如:
java.lang.OutOfMemoryError: Java heap space
Caused by:
java.lang.OutOfMemoryError: Java heap space
at com.taobao.tair.packet.BasePacket.readString(BasePacket.java:73)
at com.taobao.tair.packet.ResponseGetGroupPacket.decode(ResponseGetGroupPacket.java:55)
at com.taobao.tair.comm.TairClient.invoke(TairClient.java:140)
at com.taobao.tair.impl.ConfigServer.retrieveConfigure(ConfigServer.java:116)
at com.taobao.tair.impl.DefaultTairManager.init(DefaultTairManager.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1237)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1203)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1167)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
…
于是大胆怀疑与tair相关,首先确认了tair server的健康状态后,结合最近搭建环境的变动,进一步怀疑到是配置文件中关于tair的配置相关,最终验证了这一猜想。
总结一下,OOM要根据具体问题具体分析,不要一味怀疑是应用代码或Xmx的问题。就像本次OOM中,曾求助相关应用开发人员,他一直在尝试调整Xmx参数大小,思路不对,甚至准备重新build部署应用…
分享到:
相关推荐
记一次用jprofilor定位生产环境OOM的经历.md 随着平台业务的不断发展,平台曲库数据的不断增加,系统偶尔出现内存溢出的情况。内存溢出相比其它异常而言,通常比较隐晦,一般是伴随着时间慢慢积累而产生的,因此不能...
\n\n【排查过程】中,登录链路追踪控制台,开启查看Token开关,然后选择相应的链路数据采集客户端(如Jaeger),获取接入点信息进行配置,这样可以全面监控和分析请求的完整流程,包括Nginx和Web服务之间的交互。...
以郑州大总账系统为例,假设我们遇到了OOM问题,具体分析步骤如下: 1. **分析javacore文件**: - **内存信息**:从`BytesofHeapSpaceFree`字段中发现剩余堆空间仅为7.8M,提示可能存在堆内存溢出。 - **线程信息...
本文以瀚银的技术团队为例,探讨了金融系统,尤其是清结算系统在建设过程中的挑战和解决方案。金融系统的特性决定了它对准确性的要求极高,任何多一次或少一次的操作都可能导致严重后果。 在构建金融系统时,常见的...
GE 烟草行业解决方案.pdf
matlab的figure窗口记录,保存成视频或gif格式图片,代码
毕业论文-PHP短网址生成系统-整站商业源码.zip
GibbsCAM2006图素绘制.pdf
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
毕业论文-乘风_图床源码 多接口-整站商业源码.zip
毕业论文-活动报名小程序-整站商业源码.zip
毕业论文-【超人】积分商城 superman_creditmall 4.6.17 安装更新一体包-整站商业源码.zip
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
IDC机房及设备的相关介绍.pdf
毕业论文-网址导航大全主题风格模板-整站商业源码.zip
内容概要:本文档是关于2020年TI杯大学生电子设计竞赛中的单相在线式不间断电源(UPS)设计任务。文档详细列出了设计并制作交流正弦波在线式不间断电源的具体要求,包括交流供电下的输出电压、电流、频率精度,负载和电压调整率,输出波形质量,以及从交流供电到直流供电的即时切换能力。同时,对直流供电下的效率优化提出了要求。文档还规定了设计报告的评分标准,涵盖方案论证、理论分析、电路与程序设计、测试方案与结果分析等方面。此外,文档提供了具体的技术指标定义,并强调了作品的原创性和安全性要求。 适合人群:电气工程专业学生或具有一定电力电子基础的研究人员。 使用场景及目标:①作为参赛指南,帮助参赛者理解竞赛要求并完成作品;②作为教学材料,用于指导学生进行不间断电源的设计与制作,掌握相关技术细节和工程实践技能。 其他说明:此文档不仅明确了技术规格和性能指标,还强调了设计过程中的理论分析、实验验证的重要性,鼓励参赛者在满足基本要求的基础上追求更高的效率和更好的性能。
毕业论文-Z-BlogPHP海盗导航主题模板-整站商业源码.zip
数据集介绍 A. 数据样本数量 红葡萄酒(Red Wine):1599 条 白葡萄酒(White Wine):4898 条 B. 属性数量 11 个输入属性 + 1 个输出属性 备注:部分属性可能存在相关性,建议应用特征选择(Feature Selection)方法优化模型。 输入变量(基于理化检测指标): 固定酸度(fixed acidity) 挥发性酸度(volatile acidity) 柠檬酸含量(citric acid) 残留糖分(residual sugar) 氯化物含量(chlorides) 游离二氧化硫(free sulfur dioxide) 总二氧化硫(total sulfur dioxide) 密度(density) pH 值(pH) 硫酸盐含量(sulphates) 酒精度(alcohol) 输出变量(基于感官评价数据): 12. 品质评分(quality,范围 0-10 分)
此压缩包包含了本毕业设计项目的完整内容,具体包括源代码、毕业论文以及演示PPT模板。 开发语言:Java 框架:SSM(Spring、Spring MVC、MyBatis) JDK版本:JDK 1.8 或以上 开发工具:Eclipse 或 IntelliJ IDEA Maven版本:Maven 3.3 或以上 数据库:MySQL 5.7 或以上 项目配置完成后即可运行,若需添加额外功能,可根据需求自行扩展。 运行条件 确保已安装 JDK 1.8 或更高版本,并正确配置 Java 环境变量。 使用 Eclipse 或 IntelliJ IDEA 打开项目,导入 Maven 依赖,确保依赖包下载完成。 配置数据库环境,确保 MySQL 服务正常运行,并导入项目中提供的数据库脚本。 在 IDE 中启动项目,确认所有服务正常运行。 主要功能简述: 请假审批流程:系统支持请假申请的逐级审批,包括班主任审批和院系领导审批(针对超过三天的请假)。学生可以随时查看请假申请的审批进展情况。 请假记录管理:系统记录学生的所有请假记录,包括请假时间、原因、审批状态及审批意见等,供学生和审批人员查询。 学生在线请假:学生可以通过系统在线填写请假申请,包括请假的起止日期和请假原因,并提交给班主任审批。超过三天的请假需经班主任审批后,再由院系领导审批。 出勤信息记录:任课老师可以在线记录学生的上课出勤情况,包括迟到、早退、旷课和请假等状态。 出勤信息查询:学生、任课老师、班主任、院系领导和学校领导均可根据权限查看不同范围的学生上课出勤信息。学生可以查看自己所有学年的出勤信息,任课老师可以查看所教班级的出勤信息,班主任和院系领导可以查看本班或本院系的出勤信息,学校领导可以查看全校的出勤信息。 出勤统计与分析:系统提供出勤统计功能,可以按班级、学期等条件统计学生的出勤情况,帮助管理人员了解学生的出勤状况。 用户管理:系统管理员负责管理所有用户信息,包括学生、任课老师、班主任、院系领导和学校领导的账号创建、权限分配等。 数据维护:管理员可以动态更新和维护系统所需的数据,如学生信息、课程安排、学年安排等,确保系统的正常运行。 系统配置:管理员可以对系统进行配置,如设置数据库连接参数、调整系统参数等,以满足不同的使用需求。 身份验证:系统采用用户名和密码进行身份验证,确保只有授权用户才能访问系统。不同用户类型(学生、任课老师、班主任、院系领导、学校领导、系统管理员)具有不同的操作权限。 权限控制:系统根据用户类型分配不同的操作权限,确保用户只能访问和操作其权限范围内的功能和数据。 数据安全:系统采取多种措施保障数据安全,如数据库加密、访问控制等,防止数据泄露和非法访问。
内容概要:本文详细介绍了EP100伺服驱动器量产型的全套C源代码及硬件资料,涵盖Altium Designer硬件图纸(包括主控板、驱动板、显示板的电路原理图和PCB文件)以及基于STM32F103的源代码。文中不仅展示了硬件设计细节,如IGBT驱动电路优化、电流采样电路调整,还深入探讨了软件层面的关键代码段,如驱动保护机制、PID积分限幅处理和工程师模式的实现。此外,文章揭示了一些量产过程中遇到的问题及解决方案,如电压毛刺、电机低速抖动等。 适合人群:从事嵌入式系统开发、伺服控制系统研究的技术人员,尤其是对STM32微控制器和Altium Designer有一定了解的研发人员。 使用场景及目标:适用于希望深入了解伺服驱动器内部工作原理、掌握硬件设计技巧和解决实际工程问题的专业人士。目标是帮助读者理解并改进类似产品的设计,提高产品性能和稳定性。 其他说明:文中提到的实际案例和代码片段为读者提供了宝贵的实践经验,有助于提升实际操作能力。同时,硬件设计中的‘疤痕美学’概念生动地展现了工程师们解决问题的过程,增加了文章的趣味性和实用性。