加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

设计师们如何提前做好适配?

发布时间:2021-02-06 13:03:52 所属栏目:外闻 来源:互联网
导读:内存占用在 5-10G之间那次是第一次启动完成的时间,后面又连续涨了两次。怀疑是有内存泄露,在把流量停掉以后,重启服务。观测到内存仍旧会规律上涨,且一个小时会涨一次。如此规律,让人不得不怀疑是词典更新导致。词典文件是ceph挂载的,会自动更新,所以

内存占用在 5-10G之间那次是第一次启动完成的时间,后面又连续涨了两次。怀疑是有内存泄露,在把流量停掉以后,重启服务。观测到内存仍旧会规律上涨,且一个小时会涨一次。如此规律,让人不得不怀疑是词典更新导致。词典文件是ceph挂载的,会自动更新,所以我几乎没关注过。确认了一下词典的更新时间和更新频率。确实也是一小时更新一次,且其每次更新的时间和内存每次上涨时间相match。

想尽快验证一下是否真的是词典更新导致的内存上涨,等着词典一次一次例行更新就太慢了。不过由于这个词典API判断词典是否更新是检测的文件修改时间(mtime),所以通过touch该词典文件,可以提前触发词典的加载。

按理说双buffer的词典,在正常启动后暴涨一次内存是合理的。因为启动的时候内存中加载了词典的一个版本。一个小时之后词典更新,第二个版本的词典数据也会加入到内存。而彼时原先的前台词典虽然变成了后台词典,但是内存并不会立即delete(持有旧词典数据的unordered_map)。因为可能运行的请求处理逻辑仍然会用到旧词典。

重新阅读这个词典API的实现。当内存中存在两个版本的词典后,等到词典第二次更新到时候(也就是第三个版本词典出现的时候),该实现逻辑是先创建一个词典对象存储第三个版本词典的数据。若其加载解析成功则原先的后台词典对象就会被delete(第一个版本的词典占用的内存被释放)。然后后台词典的指针指向刚新建的对象(第三个版本的词典正式成为后台词典),最后做前后台词典的切换(第三个版本词典成为前台词典,第二个版本的词典变成后台词典)。

也就是说按照这个词典API的实现逻辑,内存中确实存在某个时刻存储着三份词典的数据,涨两次内存也说得通,但是当新的词典加载完成,上上个版本的词典对象是会被delete的。所以内存应该回落才对!难道是delete没有被触发吗?

尝试了touch了几次词典文件发现,确实词典文件更新会导致内存连续上涨。但诡异的是后来我尝试缩减词典到一个特别小的大小,却观察到机器内存并不会下降!哦?这是词典API本身存在内存泄露的风险吗?和刚才看代码时的疑惑一样,上上版本的词典没有触发delete?然而通过多次测试又发现这样一个事实:

词典内存不会永远上涨,启动完成之后,最多涨两次,第三次也会涨但比较少,第四次五次更新词典文件,则几乎不会导致内存的变化!如果说存在词典对象没有被正常delete,那么内存占用应该会继续上涨,而不是趋于稳定。

头疼。一方面内存不会无限上涨,不像是内存泄露;但另一方面词典缩小却不会导致内存占用减少。
 

之前有同事在其他项目中有热更新词典的代码,我就直接拿来用了。这是典型的双Buffer词典。也就是程序运行期间,内存中会同时维持两份词典:一份前台词典供运行时各处理逻辑检索,另一份是后台词典,在检测到目标文件修改时(通过检查文件mtime判断的是否更新)。在词典数据更新时,重新解析加载,最新的数据储存到后台词典中。最后两个词典做0 - 1 切换,也就是前台词典变后台词典,后台词典变前台词典。

词典类在服务中采用的核心数据结构是unordered_map。前后台词典也就是会存在两个unordered_map。key是某某ID,value是词典原始文件逐行解析后重组出来的protobuf Message对象。

在线下环境(非线上生产环境)测试的时候,自测完代码逻辑无问题。喵了一眼机器基础指标,发现内存会多次上涨。
 

数据基础设施管理

在竞争激烈的市场领域中,数据库管理系统供应商知道他们的产品必须提供功能以简化、自动化和提高管理活动质量。这些供应商意识到,易于管理和节省时间的自动化是企业在比较产品时的关键评估点。

供应商将继续集成自动化和产品生成的建议,以减少数据库管理员在重复日常低ROI的管理活动上花费的时间。

运营人工智能(AIOps)是大数据、人工智能、机器学习和自动化技术的集合,可帮助数据基础架构支持人员快速解决问题,并更有效地支持大规模企业计算环境。

数据基础结构管理自动化的示例包括:

  • 甲骨文。利用自动化减少管理任务时间和提高系统质量的示例是甲骨文的自治数据库。
  • 微软。管理数据平台包括管理其操作系统的云和本地版本。微软的Operations Management Suite提供了一个控制台,该控制台可以自动化针对云和本地OS的各种管理活动;
  • BMC Software。除了产品制造商,第三方管理工具提供商还可以专注于自动化数据基础架构支持活动。BMC的TrueSight Automation for Servers就是很好的例子,让我们看到第三方产品提供商如何使用增强的数据管理功能来减少管理时间并提高支持质量。

数据分析与展示

在数据分析的早期阶段,对于IT行业的每个人来说,显而易见的是,数据科学家花费了太多时间来收集、存储和准备数据进行分析,实际上这些时间可以用来分析信息以产生业务见解。

分析工具供应商很快了解到,如果他们希望提高其产品的竞争优势,则他们必须提供自动化、人工智能和机器学习功能来帮助数据科学家准备数据进行分析,并指导他们进行数据探索过程。

目前描述这些功能的行业流行词是增强分析。

增强分析使用AI、机器学习和自动化功能来改善数据获取、准备和分析功能,其目的是使数据科学家能够更轻松地生成和发布高质量的见解。增强分析还可以通过生成建议来指导他们完成数据分析过程,从而帮助专家和公民数据科学家更有效地探索数据。

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读