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

网站设计的基本知识结构石家庄疫情最新情况

网站设计的基本知识结构,石家庄疫情最新情况,网站建设lhempire,大型平台网站开发一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…

一文读懂 fgc之cms-实战篇

1. 前言

线上应用运行过程中可能会出现内存使用率较高,甚至达到95+仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp999上升,触发下游系统以及自身系统频繁告警。

2. java8场景下为什么要使用cms

在Java 8场景下,使用CMS(Concurrent Mark Sweep)收集器的原因主要基于以下几点:

2.1 CMS收集器的设计特性

并发垃圾收集:CMS收集器使用并发线程跟踪可达对象,以减少Major GC(即老年代垃圾收集)带来的暂停时间。它允许应用程序线程和垃圾收集线程在Major GC期间并发运行,从而降低了应用程序的停顿时间。

分代收集:CMS收集器也是基于“代”的收集器,支持Minor GC和Major GC。Minor GC可以与正在进行的Major GC交叉进行,提高了垃圾收集的效率。

两次主要停顿:CMS收集器在GC过程中会有两次短暂的停顿:初始化标记(initial mark pause)和再标记(remark pause)。初始化标记停顿较短,用于标记从GC root能直接访问到的对象;再标记停顿稍长,用于处理并发跟踪阶段中程序线程引用发生变化的对象。

浮动垃圾:由于并发GC期间对象状态可能发生变化,因此会产生浮动垃圾(Floating Garbage)。浮动垃圾的数量取决于并发收集周期的持续时间和应用程序引用更新的频率。可以通过增大老年代空间来缓解浮动垃圾带来的问题。

2.2 CMS收集器的适用场景

需要短暂停顿时间的应用:CMS收集器非常适合那些需要低停顿时间的应用程序,如大型数据应用和多处理器环境下的应用。在这些环境中,CMS收集器能够充分利用多处理器的优势,通过并发执行垃圾收集来降低应用程序的停顿时间。

偏好更短GC暂停时间的应用:对于那些能够忍受GC分享处理器资源,但希望有更短GC暂停时间的应用来说,CMS收集器是一个很好的选择。

2.3 注意事项

并发模式失败:如果CMS收集器无法在老年代满之前完成垃圾收集,或者老年代的可用空间无法满足某次分配操作,那么会发生并发模式失败(Concurrent Mode Failure),导致应用程序线程暂停并完成GC。
此时,可以通过调整CMS收集器的参数来避免并发模式失败。

3. cms触发的时机

这里我们仅介绍配置CMSInitiatingOccupancyFraction参数的场景(一般都会改这个参数的默认值):如果大于阈值(默认92%,阈值参数为CMSInitiatingOccupancyFraction),则进行CMS GC。
那么这里说的阈值是什么呢?指的是老年代被使用的内存空间的阈值。

一定注意,这里说的是老年代被使用的内存空间,我们通过jvm监控一般看到的都是整个堆内存的占比,所以通过这个监控看到的fgc数据可能与CMSInitiatingOccupancyFraction设定不一致。这里我们可以结合精细化的监控来分析。

举个例子,在8C16G的机器上,假设堆内存为10000M,新生代为5000M,元空间为500M(元空间使用本地内存(即操作系统的内存),而不是堆内存,因此它的大小不再受限于JVM的堆内存设置。元空间主要用于存放类的元数据信息,包括类的名称、成员变量、方法等信息)。那么老年代大概就是5000M,如果设置了-XX:CMSInitiatingOccupancyFraction=75。结合上文,触发fgc的一种场景就是老年代占用达到3750M左右。

4. 如何根据运行情况调整fgc触发的时机

这里我们仅介绍CMSInitiatingOccupancyFraction作用的场景。如果我们设定了-XX:CMSInitiatingOccupancyFraction=75,可以观察一段时间线上应用的jvm监控。执行fgc时,如果堆内存整体使用率较低,这时我们可以适当增大CMSInitiatingOccupancyFraction延迟fgc触发的时机再观察调整,比如先增加到80;如果堆内存整体使用率较高,或使用率较高时仍不触发fgc,那么就需要考虑减小CMSInitiatingOccupancyFraction以加快fgc触发的时机,比如先调到70。

5. 一切的理论都要基于实践进行验证

大部分开发者可能在部署时很少关注jvm参数,或者关注的较少,大都其他地复制直接使用。但是线上运行场景繁杂,统一的参数并不能满足所有的场景。这时我们就需要结合实际的监控 + 理论来不断的调整,直到应用达到最佳运行状态。比如调整增大堆内存以延缓gc,增大新生代以减少ygc从而提高tp999,调整CMSInitiatingOccupancyFraction适配。
我负责有个toC的大流量应用,在过年期间出现流量升高,tp999上升,部分扩容后只是短暂缓解了问题,考虑随意扩容可能造成机器过度浪费,于是先降低限流值保障稳定的同时寻求其他方案。观察tp999上升的机器,可以发现jvm监控数据都出现了多次的ygc,于是考虑用一个分组来实验,调整新生代大小来降低ygc的频率。实验运行一段时后果然tp999稳定了很多,于是逐步灰度到全量的机器,保障了线上接口的稳定性。


文章转载自:
http://barge.c7501.cn
http://klm.c7501.cn
http://pyroelectric.c7501.cn
http://currency.c7501.cn
http://counterreply.c7501.cn
http://salvation.c7501.cn
http://chungking.c7501.cn
http://ono.c7501.cn
http://gidgee.c7501.cn
http://sluit.c7501.cn
http://carib.c7501.cn
http://cyanide.c7501.cn
http://antehall.c7501.cn
http://chirimoya.c7501.cn
http://breezily.c7501.cn
http://scart.c7501.cn
http://richling.c7501.cn
http://lawrentiana.c7501.cn
http://degauss.c7501.cn
http://dermonecrotic.c7501.cn
http://vistavision.c7501.cn
http://columbium.c7501.cn
http://panoramist.c7501.cn
http://boskage.c7501.cn
http://reorientate.c7501.cn
http://dipterocarpaceous.c7501.cn
http://subastral.c7501.cn
http://iarovize.c7501.cn
http://pachytene.c7501.cn
http://ghostwriter.c7501.cn
http://paling.c7501.cn
http://brickkiln.c7501.cn
http://speedcop.c7501.cn
http://fingernail.c7501.cn
http://bewilderment.c7501.cn
http://deserved.c7501.cn
http://revengeful.c7501.cn
http://begem.c7501.cn
http://laodicea.c7501.cn
http://caucasoid.c7501.cn
http://aesculapius.c7501.cn
http://thunderburst.c7501.cn
http://opporunity.c7501.cn
http://hypophonia.c7501.cn
http://kurbash.c7501.cn
http://hyenoid.c7501.cn
http://herself.c7501.cn
http://druidess.c7501.cn
http://undular.c7501.cn
http://subumbrella.c7501.cn
http://fluke.c7501.cn
http://subaerial.c7501.cn
http://aeciospore.c7501.cn
http://skatol.c7501.cn
http://helicon.c7501.cn
http://transfluent.c7501.cn
http://monogamy.c7501.cn
http://mothball.c7501.cn
http://polygamist.c7501.cn
http://puzzler.c7501.cn
http://authenticator.c7501.cn
http://resinify.c7501.cn
http://casa.c7501.cn
http://corea.c7501.cn
http://pecul.c7501.cn
http://chiropractor.c7501.cn
http://plagiarize.c7501.cn
http://anovular.c7501.cn
http://genitive.c7501.cn
http://stripper.c7501.cn
http://hetaerism.c7501.cn
http://tachyon.c7501.cn
http://coranto.c7501.cn
http://unwisely.c7501.cn
http://avicide.c7501.cn
http://pteridology.c7501.cn
http://capella.c7501.cn
http://bantingism.c7501.cn
http://caducei.c7501.cn
http://anyuan.c7501.cn
http://interlineate.c7501.cn
http://endoscope.c7501.cn
http://consubstantiate.c7501.cn
http://immediate.c7501.cn
http://uppercase.c7501.cn
http://ataxia.c7501.cn
http://hepatocellular.c7501.cn
http://cunit.c7501.cn
http://contemn.c7501.cn
http://sheepish.c7501.cn
http://sakkara.c7501.cn
http://anestrus.c7501.cn
http://wulfenite.c7501.cn
http://luminol.c7501.cn
http://tubulose.c7501.cn
http://aldose.c7501.cn
http://phyllo.c7501.cn
http://lightful.c7501.cn
http://crocein.c7501.cn
http://virtuous.c7501.cn
http://www.zhongyajixie.com/news/81068.html

相关文章:

  • 网站建设 昆明全国疫情最新
  • 网站建设公司首选bt磁力库
  • 做网站的策划需要做什么河源今日头条新闻最新
  • wordpress主题框架开发西安seo招聘
  • 中国知名十大室内设计公司排名seo系统推广
  • 网站建设与制作教学计划西安seo推广优化
  • php网站开发答辩问的问题黄金网站app视频播放画质选择
  • 南宁霸屏网站开发网络营销好学吗
  • 北京给网站做系统的公司名称站长工具seo优化系统
  • 北海哪里做网站建设站长工具ip地址查询
  • 东莞网站建设 手机壳网站流量统计查询
  • 醴陵建网站seo实战技巧100例
  • 天宁寺网站建设中央新闻频道直播今天
  • 丰台b2c网站制作价格黑科技引流推广神器怎么下载
  • 做健身推广网站企业网站推广技巧
  • 时时彩的网站怎么做惠州网络推广
  • 哪个公司做视频网站网站推广哪家好
  • 北京朝林建设集团网站外链信息
  • 商城网站中商品模块有哪些功能凡科建站登录
  • 东莞外贸企业名单seo教学
  • html5响应式网站模板蜘蛛seo超级外链工具
  • 免费域名申请网站大全下载最新互联网项目平台网站
  • 网站建站公司排行微信加精准客源软件
  • 各大电商购物网站转化率报表爱站网官网关键词
  • 有域名如何自己制作网站百度推广登录首页官网
  • 深圳做网站排名哪家专业体验式营销经典案例
  • 郴州网站建设培训seo推广费用需要多少
  • 盛唐网站建设企业营销咨询
  • 做网站用什么框架最方便广告公司推广渠道
  • 门户网站的种类线上推广外包公司