当前位置: 首页 > news >正文

网站优化大赛公关公司有哪些职位

网站优化大赛,公关公司有哪些职位,网站开发时间段,网站设计工程师培训这篇文章分析了为什么Plumbr Agents在某些情况下以及如何延长GC暂停的时间。 对基本问题进行故障诊断揭示了有关在GC暂停期间如何处理JVMTI标记的有趣见解。 发现问题 我们的一位客户抱怨说#xff0c;附加了Plumbr代理后#xff0c;应用程序的响应速度明显降低。 通过分析G… 这篇文章分析了为什么Plumbr Agents在某些情况下以及如何延长GC暂停的时间。 对基本问题进行故障诊断揭示了有关在GC暂停期间如何处理JVMTI标记的有趣见解。 发现问题 我们的一位客户抱怨说附加了Plumbr代理后应用程序的响应速度明显降低。 通过分析GC日志我们发现GC时间异常。 这是不带Plumbr的JVM摘录的GC日志 2015-01-30T17:19:08.965-0200: 182.816: [Full GC (Ergonomics) [PSYoungGen: 524800K-0K(611840K)] [ParOldGen: 1102620K-1103028K(1398272K)] 1627420K-1103028K(2010112K), [Metaspace: 2797K-2797K(1056768K)], 0.9563188 secs] [Times: user7.32 sys0.01, real0.96 secs] 这是附加了Plumbr代理的一个 2015-02-02T17:40:35.872-0200: 333.166: [Full GC (Ergonomics) [PSYoungGen: 524800K-0K(611840K)] [ParOldGen: 1194734K-1197253K(1398272K)] 1719534K-1197253K(2010112K), [Metaspace: 17710K-17710K(1064960K)], 1.9900624 secs] [Times: user7.94 sys0.01, real1.99 secs] 异常隐藏在经过的时间中。 实时时间是经过的实际时间。 如果您手里拿着秒表那么实时将等于该数字。 用户时间 加上系统时间是测量过程中消耗的总CPU时间。 如果多个内核上有多个线程则该时间可能大于实时时间。 因此对于并行GC实时时间应大致等于用户时间/线程数。 在我的机器上该比率应该接近7而没有Plumbr Agent的情况下确实是如此。 但是使用Plumbr时该比率大大下降。 绝对不行 初步调查 有了这样的证据以下是最可能的假设 Plumbr导致JVM在每个GC之后执行一些繁重的单线程操作 Plumbr导致JVM使用更少的线程进行垃圾回收 但是仅查看GC日志中的一行就无法进行更狭窄的观察因此我们继续进行可视化上述比率 图表上的下降恰好发生在Plumbr发现内存泄漏的那一刻。 在根本原因分析过程中GC可能会给GC带来一些额外负担但永久影响GC暂停时间绝对不是我们为代理特意设计的功能。 这种行为有利于第一个假设因为我们不太可能在运行时影响GC线程的数量。 创建隔离的测试用例花费了一段时间但是在以下约束的帮助下我们可以钉上它 应用程序必须泄漏内存以供Plumbr检测 应用程序必须经常暂停以进行垃圾收集 …以及作为突破时刻–应用程序必须具有较大的活动集这意味着在Full GC中幸存的对象数量必须很大。 在编译了足够小的测试用例之后可以放大根本原因检测范围。 合理的方法是打开和关闭Plumbr代理的各个功能并查看问题将在哪种配置下重现。 通过这种简单的搜索我们设法将问题定位到Plumbr Agent执行的单个操作。 关闭JVMTI标签后问题消失了。 在分析gc根和引用链的路径时 我们标记堆上的每个对象。 显然GC时间在某种程度上受我们生成的标签的影响。 寻找根本原因 不过尚不清楚为什么GC暂停会延长。 垃圾会被Swift收集并且大多数带标签的对象都应该符合GC的条件。 但是发现的是存在大量活动集这是内存泄漏的症状之一其中保留了许多带标签的对象。 但是即使对活动集中的所有对象都进行了标记这也不应线性影响GC时间。 GC完成后我们会收到有关所有已收集的标记对象的通知但活动集不在这些对象之内。 这使人们想知道HotSpot是否出于某种奇怪的原因在每个GC之后迭代所有标记的对象。 为了验证索赔可以查看热点源代码。 经过一番挖掘之后我们最终到达了JvmtiTagMap :: do_weak_oops 它的确遍历了所有标签并对所有标签进行了一些不太便宜的操作。 更糟的是该操作是顺序执行的并且不并行执行。 在找到每个垃圾回收之后调用此方法的调用链之后解决了最后一个难题。 为什么这样做的方式以及它与弱引用的关系完全超出了本文的范围 在并行GC上运行并具有与串行运行相同的昂贵操作一开始似乎是设计缺陷。 第二个想法JVMTI的创建者可能从未期望有人标记所有的堆因此从来没有费心去优化此操作或并行运行它。 毕竟您永远无法预测人们将使用您设计的功能的所有方式因此也许值得检查一下Hotspot中的GC后活动是否也应该有机会使用现代JVM倾向于使用的所有gazillion内核。可使用。 因此为了解决这个问题我们需要清理不再需要的标签。 修复它就像在我们的JVMTI回调之一中仅添加三行一样容易 if(isGenerated(*tag_ptr)) {*tag_ptr 0;} 而且瞧瞧一旦分析完成我们几乎和开始时一样出色。 如下面的屏幕快照所示在发现内存泄漏期间仍然存在暂时的性能波动并且在完成内存泄漏分析之后会略有恶化 包起来 现在补丁已推出并且解决了Plumbr检测到泄漏后GC暂停时间受到影响的情况。 随意去获取更新的代理以解决性能问题。 作为一个总结我建议您在使用广泛的标签时要格外小心因为“便宜”的标签会堆积在角落的箱子上从而为性能的大幅下降奠定了基石。 为确保您没有滥用标记请翻转– XX TraceJVMTIObjectTagging的诊断选项。 它将使您能够估计标签映射消耗多少本机内存以及堆遍历花费的时间。 翻译自: https://www.javacodegeeks.com/2015/02/jvmti-tagging-can-affect-gc-pauses.html
http://www.yutouwan.com/news/182570/

相关文章:

  • 玉溪网站建设网站建设金坛网站开发
  • 做外贸怎么登陆外国网站成都商铺装修设计公司
  • 佛山市建网站做网站费用关于企业网站建设的必要性
  • 网站制作开发的步骤和方法个人网站的名字
  • 大连最好的做网站的公司公司管理软件有哪些
  • 电子商务网站建设的书佛山小程序开发平台
  • 金华永康网站建设网站建设与经营
  • 自己建网站怎么推广网络设计的基本原则有哪些
  • 无锡食品网站设计计算机平面设计主要学什么
  • 网站集约化建设讲话稿《网站平台建设》课程实训
  • 网站设计网站建设网站制作页面设计的内容
  • 做网站公司联系方式页面做网站成本
  • 网站建设实训不足推广计划书怎么写
  • 来宾网站seo荆州 商务 网站建设
  • 企业网站优化推广公司大型电子商务网站需要配服务器
  • 网站设计实训报告卖辅助网站怎么做
  • 如何申请网站com域名汽车可以做哪些广告视频网站
  • 德州企业网站优化公司做网站怎样套用模板
  • 做影视网站用的封面互联网营销培训的课程学费
  • 网站开发智能化方向睢宁县建设局网站
  • dede网站版权信息标签长治市住房保障和城乡建设管理局网站
  • 招聘网官方网站个人网站备案说明
  • 做母婴产品哪个网站做的好企业管理咨询包括哪些
  • 诸城网站建设哪家好室内设计公司排名一览表
  • 高端网站创建有的网站打不开是什么原因呢
  • 静安企业网站建设郴州建网站
  • 模板做的网站如何下载手机wap网站建设
  • 医药网站备案企业展厅设计哪里好
  • 旅游网站开发的作用济南软件优化网站建设
  • 做一个自己的免费网站做站群的网站怎么来