账套间大数据量同步的解决方案
在忙于其他项目的开发过程中,突然有一家客户反馈一个大数据量问题,当物品基础数据等大数据同步到另一个账套时,系统就卡死,崩溃啦。
我拿到用户的数据环境,用Visual GC监测工具,监测了一看:
整个的伊甸园内存区和旧时代内存区都爆满,jvm直接卡死,tomcat直接崩溃
在同步的时候,瞬间内存快速爆满,当时把我吓了一跳。
开始的时候,想当然的认为加大内存就可以解决此问题,于是jvm的最大内存由原来的1024M,扩到
1500M,内存还是直接爆满。
最好用Visual VM监测到,在同步的时候,产生了大量的实例对象,GC来不及回收,直接耗尽整个内存。
于是确定,可能是程序出了问题。
于是,开始从程序一步一步的查找,开始的第一个方法,就是查询物品的数据量比较大4.7W多条,直接耗尽了可怜的本身就不大的内存。通过在群里,开发人员的讨论和建议,对于大数据量的查询,我做了分页形式的批量查询,然后批量处理数据,批量同步数据。
但是,再同步的过程中,会产生逻辑问题,为了不改变现有的业务逻辑和数据问题,我把处理后的数据,一次同步过去,监控了下同步的过程中,系统还是可以承受的。
可是,同步的过程中,时间问题产生了,同步一次,大约要至少3个小时,这是多么可怕的事情,我又遇到了同步的时间问题,我在思考究竟哪里消耗这么长的时间,于是又重新回归程序的定位,查找,看了一遍代码后,看到代码中很多不足之处,进行了一一优化,最终发现了有个xml文件读取,解析放到了循环里面,导致耗费大部分时间。设置了一个全局变量,值解析一次xml文件,然后循环过程中,都从这个变量里去取相应的配置信息。
通过测试以后,时间终于降下来了,现在时间大约10分钟左右,这令我相当的振奋不已。
不过在最后同步完数据的后处理时代,内存很快增高不少,于是定位到更新处理代码段的查询,也做了分页查询处理。
另外,进行同步的过程中,发现JVM内存还是不是很稳定,总是升高,不往下降,为了保持内存跟趋于稳定,我每2W条的数据处理,就做一下 system.gc()垃圾回收,虽然会占用一点时间,但是对整体时间效率上还是可以接受的,这样做保证了系统趋于稳定。
在往数据库同步的过程中,也做了基本的垃圾回收处理。
优化后的处理结果如下图:
由于同步的业务逻辑校验,处理等都要耗费时间,在时间效率上还是稍微差点,但是整体上应该还是满足客户使用的。
为了不使当前的页面卡死,把原来的同步提交,改成了异步提交处理。
为了使同步的日志,加载到页面不至于卡死,改成了页面下载的模式,下载下来直接在txt文件里查看。
以上,就是我做得一些基本优化。
相关推荐
以下是对标题、描述以及标签中涉及的知识点的详细解释: 1. **伪原创**:伪原创是指通过改写、替换或重组现有文章中的词汇和句子,使得内容看起来新鲜,但实质上仍保持原意的一种方法。在SEO中,它用来规避搜索引擎...
版权法保护原创性的文学、艺术作品,如书籍、音乐、电影等。创作者拥有对其作品的复制、发行、展示和改编等权利。作品一旦完成,版权自动产生,无需注册。然而,为了更好地保护权益,通常会进行版权登记。 五、商业...
为了深入研究,文章采用了案例搜集的方法,收集了9个相关案例,其中3个涉及作品设计方案征集竞赛,虽然并非严格意义上的招投标,但同样反映了知识产权侵权问题。这些案例涵盖了工程招标、货物采购等多个领域,揭示了...
6. **数据驱动**:利用数据分析工具,收集并分析相关数据,通过数据背后的故事揭示新的知识或见解。 7. **创新思维**:尝试打破常规,运用创新的思维方式,提出新颖的观点和策略。 在创作过程中,我们还需要注意...
这款软件的主要功能是抓取并收集该平台上的问答数据。 【描述】中提到的“支持伪静态及伪原创关键词替换”是这款采集软件的重要特性。伪静态技术是将动态URL转化为静态或看似静态的URL,主要是为了提高搜索引擎的...
不同于农业经济依赖土地和自然资源,工业经济依赖技术、资本和劳动力,服务经济依赖各种非实体服务,知识经济中的知识具有原创性和创新性,不再局限于传统传承,而是直接应用于生产过程,成为主要的生产要素。知识...
统计学是研究数据收集、分析、解释和呈现的科学,对于理解和决策有着至关重要的作用。在准备期末复习时,理解并掌握每个章节的关键知识点至关重要。以下是对统计学主要章节复习要点的详细阐述: **第一章 总论** 1...
研究目的:“知识”一词被认为是每个教育机构中最重要的资产,管理知识被认为很难在教育机构中取得成功... 原创性:本文的主要目标是研究位于钦奈地区的工程学院和艺术与科学学院的学术人员之间知识共享的决定性因素。
收集需求,了解和记录干系人的期望;定义范围,明确项目具体成果;创建WBS(工作分解结构),将大任务分解为可管理的小部分;确认范围,验证已完成的工作是否满足要求;控制范围,防止范围蔓延。 3. **时间管理**:...
知识付费小程序是近年来互联网发展的一种新型商业模式,它允许内容创作者或知识提供者通过数字化平台将他们的专业知识、技能或课程以付费形式分享给用户。在移动互联网时代,这种模式借助微信小程序等轻量级应用,为...
根据提供的信息,我们可以总结出以下相关的C#知识点: ### C#常用函数库 - 对象转换与压缩解压 #### 对象转换为byte数组 在C#编程中,经常需要将对象序列化为byte数组以便于在网络中传输或者保存到文件中。这个...
- 软件复杂性增加,开发成本高,且大多数是原创开发。 - 社会因素对软件工程有重要影响。 4. **遗留软件与软件演化**: - 系统演化以适应新技术、业务需求和网络环境的变化。 - 30年来软件发展的规律,如持续...
这篇硕士学位论文的原创声明和使用授权说明涉及到两个主要方面,一是学术诚信,二是知识产权和版权管理。 首先,原创性声明是学术研究中的重要环节,它表明作者对其论文内容的原创性和独立性负责。在这份声明中,...
这些特性使得大数据的收集、处理和利用变得复杂,同时也对传统知识产权法提出了新的要求。 在大数据的收集过程中,涉及的知识产权问题主要是数据的来源与所有权。原始数据可能包含他人的知识产权,如版权、数据库...
抄袭、借鉴、微创新和创新是知识管理的四个层次,随着层次的提高,设计师能更好地创造出原创作品。 知识管理有助于设计师建立个人设计思维,形成一套处理设计问题的高效流程。通过积累和整理设计资源,可以便捷地...
统计学是研究数据收集、分析、解释和呈现的科学,对于理解和决策有着至关重要的作用。在统计学的学习中,理解并掌握各个章节的关键知识点至关重要,尤其是对于期末复习和考试而言。以下是对统计学各章节复习知识点的...
- 知识产权诉讼:代表客户参与侵权诉讼,进行证据收集和法律辩护。 3. **知识产权代理的重要性**: - 保护创新:知识产权代理有助于保护企业的核心竞争力,防止技术泄露或被竞争对手抄袭。 - 市场竞争:通过注册...
9. **技能与缺陷的认识**:实习过程中,实习生认识到自己在实际操作中存在的不足,通过导师的指导,逐步改善并提高工作效率。 10. **持续学习与进步**:实习的整个过程中,实习生始终保持积极的学习态度,每天都在...