广东电信防诈系统集群优化方案研究

2023-12-10 12:28吴庆祥凌俊
广东通信技术 2023年11期
关键词:堆栈参数设置内存

[吴庆祥 凌俊]

1 引言

随着大数据及云计算相关技术的发展,语音及短信诈骗的手段层出不穷,全民反诈已是当今社会发展的共识。为了更好地保障用户语音、短信业务个人信息安全,保障个人财产不受非法侵害,广东电信部署了一套防诈骗系统,该系统部署相关的拦截策略,根据策略实施号码拦截、闪信提醒等功能,一方面将诈骗号码列黑限制使用,一方面针对嫌疑号码设置短消息提醒功能[1],业务号码及短消息限制的双重举措不仅可以确保反诈策略实施的高可靠性,更能很好的体现网络服务的可感知性。

2 原因分析

2.1 系统结构

防诈系统硬件部署包括DELL 服务器、交换机、防火墙,服务器连接到交换机上,实现二层互通,防火墙做为整套系统的统一出口;软件部署方面,系统搭建了hadoop集群,mysql 数据库、采集接口程序、web 服务等组件。根据业务特性在系统上部署相关的拦截策略,满足业务不断发展的需要。

2.2 原理分析

拦截策略是根据日常反诈需求制定的实施手段,该策略通过Hadoop 集群发布至多个主机,GC(Garbage Collection,jvm 垃圾回收)为Hadoop 集群进行jvm 垃圾回收回收的基础设施[2],GC 的存在保证整个集群运行的稳定,一般策略部署完成需要35分钟左右,基本原理如图1所示。

图1 策略部署原理图

拦截策略正常部署的前提是Hadoop 集群运行正常,Hadoop 集群由多个节点组成,每个节点上运行着多个组件角色以及数据处理任务,集群下联多个主机,当前网络现状一般是上百个主机。由于业务量增加,集群的数据量也在不断增加,当集群数据量达到一定规模后,GC 的配置将无法满足集群的业务需求[2,3],导致集群出现了多个问题,包括任务执行缓慢、组件角色异常等,轻则集群变慢,重则集群服务不可用。

2.3 根因分析

目前在日常网络巡检过程在发现拦截策略部署耗时超过35 分钟,有时甚至耗时超过55 分钟,严重影响日常反诈拦截及指标考核工作需求,如图2 所示。

图2 拦截策略耗时

进一步在后台进行分析,发现集群业务程序在高峰时段里执行耗时异常告警,时长超过指标阈值等异常事件,在管理界面监控发现异常事件是因集群部分主机存在策略分发及部署延迟导致,因主机出现部署异常存在随机性,排除主机问题导致异常,然后针对GC 参数进行排查,发现集群中存在名为“NodeManager 的Java 堆栈大小(字节)”的参数默认设置为1GB,而现在的运行阈值已远超1GB,导致了任务执行出现缓慢、从而导致集群角色部署策略异常,根因分析流程如图3 所示。

图3 根因分析

3 方案设计

方案在设计与实施过程中以现网运行稳定为基准,主要从垃圾回收方式对系统的影响程度、参数设置合理性、堆栈内存大小设置对集群的稳定性三方面考量,从现阶段节点资源、业务需求和性能优化等关键因素出发,主要目的是为了更好地满足业务需求。

3.1 关键技术

(1)GC

GC 是指Java 程序本身发现并收集无用的内存。它是一种自动内存管理形式,不需要程序员释放内存,Java 中出于对安全性考虑、减少内存泄露、减少程序员工作量而设定了GC 机制。当代主流虚拟机(Hotspot VM)的垃圾回收都采用“分代回收”的算法。“分代回收”是针对不同生命周期的对象可以采取不同的回收方式,以便提高回收效率。如图4 所示,JVM 内存主要由新生代、老年代、永久代构成[3]。

图4 JVN 内存构成

大多数对象在新生代中被创建,新生代内又分3 个区:一个Eden 区,两个Survivor 区(一般而言),大部分对象在Eden 区中生成,当Eden 区满时,还存活的对象将被复制到两个Survivor 区,在新生代中经历了N 次垃圾回收后仍然存活的对象,就会被放到老年代,永久代主要要存放元数据,例如Class、Method 的元信息,与垃圾回收要回收的Java 对象关系不大[3,4]。相对于新生代和老年代来说,该区域的划分对垃圾回收影响比较小[3,5]。

(2)参数设置

对于GC 频繁以及延迟的问题,需要通过收集GC 信息,结合系统需求,确定整改方案,然后选用合适的GC回收器、重新设置内存比例、调整JVM 参数等方法进行优化。

由于Hadoop 中的NodeManager 角色是一个非常重要的组件,它负责管理集群中的节点资源,包括内存、CPU、磁盘等。其中,堆栈内存大小是影响NodeManager性能的一个重要因素[3]。所以针对NodeManager 角色的堆栈内存大小的调整需要进行合理的思考和优化[4]。集群中Java 堆栈大小(字节)的参数设置如图5 所示。

图5 堆栈大小设置

(3)堆栈内存设置

堆栈内存是指Java 虚拟机中用于存储对象的一块内存区域,它的大小取决于JVM 的参数配置。在Hadoop 中,NodeManager 的堆栈内存大小会影响到NodeManager 的性能,因此需要进行合理的配置和调整。在现网业务部署时主要从两个方面考虑。

节点资源:在调整NodeManager 的堆栈内存大小时,需要考虑节点的实际资源情况,包括内存、CPU、磁盘等。如果节点的内存资源很少,那么堆栈内存的大小就需要适当调小,否则会影响到NodeManager 的性能。

业务需求:在调整NodeManager 的堆栈内存大小时,还需要根据业务需求进行调整。如果业务需要更高的并发性和处理速度,那么可以适当增加NodeManager 的堆栈内存大小,以提高其性能。但是需要注意,堆栈内存的大小不能无限制地增加,否则会影响到集群的稳定性。

在调整NodeManager 的堆栈内存大小后,需要进行性能测试和优化,以确保NodeManager 的性能和稳定性。例如,可以使用Hadoop 自带的性能测试工具,对Node-Manager 的性能进行测试和优化,提高其效率和稳定性。

3.2 方案制定

本方案目的是通过巡检以及风险管控,提前识别出集群存在NodeManager 角色的GC 延迟可能引起任务执行延迟,导致业务指标受影响的风险点,实施大数据集群(Yarn集群)关于NodeManager 的Java 堆栈大小的参数的优化改造,以修复集群故障,从而排除可能影响集群运行的风险,提高整个集群的任务执行效率,提高整个系统的稳定性。

3.2.1 方案选择

在日常业务维护中,涉及GC 配置共有两个部分,分别是“集群默认GC 设置”,“节点GC 设置”,一个集群包含N 个节点,节点的优先级高于集群,如果节点设置值和集群默认设置值不一样,以节点为准;如节点不单独设置GC 值,直接调用集群的GC 设置值。当前GC 采用系统设计的默认配置,集群配置为1G,大部分节点配置为2G,有4 个节点为1G,在进行参数设置时可以直接调整集群参数,也可以调整节点参数,为此可有多种方案进行选择,如表1 所示[3,5]。

表1 GC 参数调整方案选择表

结合日常工作需要,从维持系统稳定,满足业务需求角度出发,目前选择方案四作为本次参数调整的方案,关于方案四的局限性目前评估为小概率事件,在后续工作中保持观察即可。

3.2.2 方案参数设置

集群的数据量在达到当前规模后,部分角色(例如NodeManager)的JVM 的配置无法满足集群的业务需求,导致集群出现了多个问题,包括任务执行缓慢、组件角色异常、GC 延迟等[6]。针对以上问题,结合实际的业务情况进行合理的JVM 参数配置,提高集群性能。

目前的节点GC 已出现严重告警,使用率已远超阈值,如图6 所示。表明目前参数设置已无法满足当前业务需求,需要进行数量调整。

图6 节点GC 告警图

堆栈的大小调整根据系统的架构来参考,由于异常主机(OS62、OS89、OS100、OS102 等)来源于默认组(NodeManager Default Group,1 GB),本次调整针对默认组、45 组的配置进行更改,参考值则参照其他组(如nodeManager(OS42),2 GB)进行配置即可,如图7 所示。

图7 GC 参数调整配置

目前系统的架构设置复核图7 的第二个参考设置,将集群中受影响的节点的NodeManager角色的“NodeManager的Java 堆栈大小”由默认的1 G 调大为2 G,如图8 所示。

图8 参数设置参考

4 方案实施

4.1 调整节点GC 参数值

将集群中受影响的节点的NodeManager 角色的“NodeManager 的Java 堆栈大小”由默认的1 G 调大为2 G,如图9 所示。

图9 调整参数

参数值设置完成后保存更改,并再次查询确认参数值已完成调整,如图10 所示。

图10 保存参数设置

参数调整后重启Yarn集群的所有NodeManager角色,如图11 所示。

图11 重启完成参数调整

4.2 方案实施后验证观察

按照上述方案设计调整堆栈大小,观察系统运行的告警、性能是否正常,观察指标情况[3]。

查看告警已自动清除,如图12 所示。

图12 方案实施后告警

查看系统拦截程序耗时前后对比,业务高峰时段中单个周期的运行时长由原先的超过50 分钟缩短至35 分钟以内,如图13 所示。

图13 方案实施前后策略部署耗时长对比

观察一周指标均正常,如图14所示。

图14 一周指标观察图

综上所述,方案实施后各组件角色状态均正常,告警自动清除,集群执行拦截策略任务不再缓慢,且没有出现其他异常报错,集群的稳定性得到显著提高;系统拦截程序耗时已恢复正常,拦截反诈业务的耗时明显改善,观察一周指标无异常。综上可知,该方案设置合理可靠,有效地解决了拦截策略部署耗时长的问题,并且提高了系统的运行稳定性,表明方案实施有效。

5 总结

本方案对hadoop 集群组件进行优化,通过调整YARN 集群 NodeManager 角色的 Java 堆栈大小配置改变GC 延迟,以解决防诈系统业务程序策略拦截耗时过长问题,经验证分析方案设计合理,方案实施有效可控,本方

案可以提高集群的性能和稳定性,有效提高任务执行效率,满足日常业务发展需求。

猜你喜欢
堆栈参数设置内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
“春夏秋冬”的内存
嵌入式软件堆栈溢出的动态检测方案设计*
基于堆栈自编码降维的武器装备体系效能预测
蚁群算法求解TSP中的参数设置
RTK技术在放线测量中的应用
动车环境下U900异频切换参数设置探讨
基于内存的地理信息访问技术
基于MATLAB仿真的井下变压器参数设置研究
一种用于分析MCS-51目标码堆栈深度的方法