汤在计较机视觉范畴多年积淀的财产级AI手艺和机械臂手艺“元萝卜SenseRobot”AI下棋机械人浓缩了商。
是阐发 dump file定位标的目的为两个标的目的:一个,不足的时候查看在内存,在哪些处所内存耗损;日记进行细粒度阐发第二个标的目的是针对,行挨次是合理简直保整个流程执。
有本人独立的 QueryId每一个 Operation ,功课会履历编译每条 SQL ,行执,环节封闭,前施行的 SQL 功课留意此封闭指的是封闭当,eServer2 的毗连而不是封闭整个 Hiv,路追踪日记基于此思,Close operation 方式发觉部门 QueryId 没有施行 。
年来近几,行业不竭成长跟着互联网,获得流量盈利学问付费行业,加强学问版权庇护政策层面亦进一步。市场规模仍在扩大虽然学问付费的,而然,轮飞速成长履历了一,、缺乏内容质量尺度化等成长障碍行业反面临付费复购率逐渐下降。
到反馈近期收,veServer2 一段时间后便会遏制办事一套开启高可用的 EMR 集群中的 Hi,ver2 一共有3个节点此集群的 HiveSer,ookeeper 中形态消息注册至 Z,A 的能力供给 H,个节点城市遏制办事一段时间后几乎3,发觉是大量的 FULL GC后呈现 OOM通过对 HiveServer2 的日记查看:
仅供阅读文章内容,投资建议不形成,慎看待请谨。据此操作投资者,自担风险。
题的复现对于此问,eConnection只需要建立一个 Hiv,onnection 对象施行 SQL同时并行开启多个线程同时利用该 C,这个问题便可复现。Server2 内存变化施行过程中察看 Hive,rver2 的内存上升后能够发觉 HiveSe,发生下降并没有,时间的添加跟着利用, OOM最初直至。
私有化摆设的集群迁徙而来领会到该集群是一套从线下,r2 的 heapsize 为 2G迁徙前的集群中 HiveServe,eapsize 调整至 2G于是为了对齐营业参数将 h,一天后间隔,到反馈再次收,问题照旧具有OOM 的,日记查看,rver2 发生了 OOM问题照旧是 HiveSe,对齐之前的设置装备摆设因为参数曾经,纯真是内存不足那么问题可能不,其他问题可能会有。 的 heapsize 调整为 4G于是起首将 HiveServer2,时间内不变运转确保能够在必然,位时间留下定。
能性不大失败可,失败了由于,留下仓库消息那么必然会,了可是没有移除于是只剩下施行,根基就是只能是呈现如许的环境:
面的仓库图再连系前,ation 占领了大量的内存此中 queryIdOper,定位出问题的缘由于是根基能够确定, 施行竣事后为当 SQL,ration 的 Map 对象有一个 queryIdOpe,除内部的内容没有成功的移,p 越来越大导致该 Ma,erver2 内存耗尽最初导致 HiveS,OOM呈现 ,大要的思绪有了这个,什么会呈现这个问题就需要细心阐发为,体的处理方案从而找到具。
11日8月,穿越人生低谷的感悟”如期而至2022年雷军的年度演讲“。人感悟之外除了分享个,手机、Redmi K50至尊版等在内的10款新品雷军还带来了包罗小米MIX Fold 2折叠屏。方表述小米官,跑完了折叠屏的最初一公里小米MIX Fold 2,5.4mm厚度仅为,验会让大师感应冷艳机能、质量、分析体。
到了问题既然找,案就清晰了那么处理方,值设置成 Operation 级别那即是将 Query Id 这个,ession 级别而不是 HiveS,ve3.x 版本此问题影响 Hi,没有这个特征2.x 临时,受影响因而不。的 issue再对照官方已知, issue此问题是已知,曾经将此问题修复目前 Hive ,.0的版本且合入了4,可查看具体:
于 Hive 组件的一个办事HiveServer2 属,ve 拜候接口次要供给 Hi,体例提交 Hive 功课例如可通过 JDBC 的, 基于 Java 开辟HiveServer2,运转过程中整个办事, JVM 进行节制内存的办理收受接管均由。/C++ 言语的内存泄露会有些差别在 JVM 言语中的内存泄露与 C,码逻辑错误惹起大量对象援用被持有JVM 的内存泄露更多的是营业代, 均无法被收受接管导致多次 GC,占用内存过大或者部门对象, 分派的内存上限间接跨越 JVM,M 内存耗尽导致 JV, 的 OOM惹起 JVM。办事会遏制响应而且退出这种环境下该 JVM ,操作系统的解体可是并不会惹起。
日近,新“小巨人”名单发布第四批国度级专精特,成功上榜踏歌智行。、特色化、立异能力凸起的中小企业“专精特新”是指专业化、精细化,业的中坚力量是优良中小企。精特新”中小企业中的佼佼者而“小巨人”企业更是“专,分市场拥有率高、质量效益好的排头兵是立异能力凸起、控制焦点手艺、细。
功课在施行后良多 SQL,Operation 的行为并没有挪用 remove,eryIdOperation 的内容能够看到也就天然没有触发移除 qu,天然就能够理解那么内存被耗尽,一个不法 Operation 的仓库同时在 SQL 施行后会紧接着发生:
ssue 上曾经有发布虽然有些问题在官方 i,我们照旧需要细心定位可是现实营业过程中,前的问题确保当,题是分歧的与已知问,的留下隐患尽可能少,擎本身的道理和实现逻辑同时也有助于愈加控制引。有清晰的认知只要对问题,逻辑有足够的领会且对处理方案的,在出产情况下的不变才能包管整个集群。
于此对整个功课的施行进行办理HiveServer2 基。挪用挨次具体的,何种接口以及挪用,者是通明的对于利用,r 或者 PyHive 等曾经封装了对应的挪用挨次常用的客户端例如 Hive JDBC Drive,心一般的打开毗连利用者只需要关,SQL施行 ,接即可封闭连,操作逻辑连结分歧与尺度的数据库。
到这里思绪理,emoveOperation 的行为需要想的问题是:为什么没有触发 r,ration 没有施行成功或者说 removeOpe,的理解来看基于前面,ion 会有3种触发机会removeOperat,别是分:
些学问有了这, OOM 的问题再来阐发前面呈现,的 ConcurrentHashMap 对象占领了大量的内存呈现 OOM 是一个名叫 queryIdOperation ,发觉这个对象位于对这个对象阐发会:
识可查看:干货 在字节跳动更多关于接口和办事器的知,kSQL Server这么一个更好的企业级Spar做
Connection 施行 SQL能够看到若是两个子线程同时利用统一个,的 Query Id 进行笼盖于是会呈现一个线程把另一个线程,己的 Query Id导致此中一个线程丢失自,Map 中移除对象导致无法成功的从 ,行思绪为具体的执:
用的可能性不大所以没有被调,下挪用了那么只剩,施行成功可是没有,也有2种环境没有施行成功:
们要晓得可是我,ection 长短常常见的现场多个线程利用统一个 Conn,的毗连池的概念中出格是在数据库, HiveServer2 本身的架构问题那么为什么没有出问题呢?这里也就涉及到,2 本身不是一个数据库HiveServer,口的和谈和 Driver 罢了仅仅供给了兼容 JDBC 接,数据库的毗连池因而比拟保守的,包管串行它并不克不及,有排它结果也就是不具,是次要问题当然这只,rver2 实现的缺陷次要仍是 HiveSe。
汤在计较机视觉范畴多年积淀的财产级AI手艺和机械臂手艺“元萝卜SenseRobot”AI下棋机械人浓缩了商。
并不是当前功课的 QueryId里面查询出的 QueryId , 发生了窜改这个 ID,一理 HiveServer 的形态逻辑那么什么样的环境下会发生窜改?再来理:
是 Airflow 进行挪用因为本次呈现问题的利用场景,一个 Dag 中并发开启 N 个并行节点Airflow 具有工作流的能力可同时在,统一个 Dag 下而这些并行节点在,onnection因而共享统一个 C,了这个问题于是触发。
queryId A于是不断遗留了 ,不异的 Query Id由于两个线程同时变成了, remove 动作后当此中一个线程施行了,ry Id 再去查询内容的时候另一个线程要基于当前 Que,着的第二个错误便会呈现紧接,ession Id也就长短法的 S。
veSession 中去查询出来在 close 的时候再从 Hi, 是一系列的独立 RPC 请求因为 HiveServer2,个流程的原子性因而不克不及包管整,一种环境那么想,个并行线程假设 N , Connection同时持有一个 Hive, SQL 会如何且同时起头发送?
对 4.0.0 的代码修复的可是因为该 issue 是针,并没有 patch对于 3.x 系列,k 将会有大量的代码不兼容间接 cherry-pic,参考进行修复因而需要自行,eration 新增修复的思绪为给 Op:
|