1) 当并发流量导到700单/s的时候 , 原来每秒产生80M垃圾 , 现在可能达到160M , 那么年轻代Survivor放不下 , 会直接放入到老年代 。
2)当兵发流量大了的时候 , 本来系统能承受的是400单/s, 但是突增到500单/s的时候 , 原来每秒可以处理一个订单 , 现在可能1秒处理不完了 , 要2秒甚至更多 。那么就有可能在垃圾回收的时候 , 2s内的对象的引用关系都还在 , 不能被回收 , 刚好又大于新生代一半的空间 , 也会被直接放入老年代 。
3)经过上面的优化 , 发生一次Minor GC , 大约要20s, 老年代有1G空间 , 1G/160M*20/60=2分钟 。2分钟触发一次GC , 通常高峰流量也就半个小时左右 。2分钟触发一次GC , 这也不太合适 。
优化四:设置CMS收集器的参数1) 避免并发失败参数设置在CMS收集器那块我们说过 , CMS正在收集垃圾但还没有完成的时候 , 又产生了新的垃圾 , 导致再次触发垃圾回收 , 这就发生死循环了 , 这就是concurrentmode failure并发失败 。为了避免并发失败 , 这时会停止CMS垃圾回收的全部线程 , 进入到Serial Old串行垃圾收集 。串行速度是很慢的 , 严重影响用户体验 。我们尽量不要让这种情况发生 。因此 , 我们设置垃圾回收参数:‐XX:CMSInitiatingOccupancyFraction , 我们设置老年代达到一定比例比如80%就出发Full GC , 留出足够大的空间给大对象 , 这样就不会触发Serial Old了 。
这个值默认是92 , 也可以设置成80 , 但设置成80就表示 , 剩下20%的内存空间正常情况下处于闲置了 。
参数设置如下:
‐Xms3072M ‐Xmx3072M ‐Xmn2048M ‐Xss1M ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐XX:SurvivorRatio=8‐XX:MaxTenuringThreshold=5 ‐XX:PretenureSizeThreshold=1M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC‐XX:CMSInitiatingOccupancyFraction=92 2)压缩整理参数设置我们可以设置在发生Full GC之后进行内存空间的压缩整理 。这里涉及到两个参数 , 一个是开启压缩整理 , 另一个是触发几次Full GC整理一次内存空间 。
-XX:+UseCMSCompactAtFullCollection:FullGC之后做压缩整理(减少碎片) -XX:CMSFullGCsBeforeCompaction:多少次FullGC之后压缩一次 , 默认是0 , 代表每次FullGC后都会压缩一次这个参数是说执行多少次Full GC以后进行一次压缩 。如果其值是3 , 则表示执行3次Full GC , 进行一次压缩整理 。在触发了CMS垃圾回收之后 , 进行内存整理 , 也会对性能有一定的影响的 。因为他也会STW 。这个过程不会特别慢 , 这和剩余的对象有关 , 剩余的对象少 , 效率就高 。剩余的对象多 , 效率就低 。因为在整理的过程中 , 对象的地址会发生变化 。
对于我们上面的案例 , 我们可以设置每次垃圾回收后都进行整理 , 为什么可以这么设置呢?因为我们full GC发生的频率很低 。偶尔搞一次大促呢?也没关系 , 大促的前面二三十分钟流量最高 , 二三十分钟触发一次Full GC没关系的 , 因为大促基本结束了 。
如果系统压力比较大 , 触发Full GC很频繁 , 这个参数就不要这么设置了 。可以设置-XX:CMSFullGCsBeforeCompaction为3次 , 5次 。
不做碎片整理可不可以呢?
最好不要 , 因为如果不做碎片整理 , 老年代的碎片就会越来越多 , 正常的大对象都放不下了 。
参数设置如下:
‐Xms3072M ‐Xmx3072M ‐Xmn2048M ‐Xss1M ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐XX:SurvivorRatio=8‐XX:MaxTenuringThreshold=5 ‐XX:PretenureSizeThreshold=1M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC‐XX:CMSInitiatingOccupancyFraction=92 ‐XX:+UseCMSCompactAtFullCollection ‐XX:CMSFullGCsBeforeCompaction=0
【亿级流量电商系统JVM模型参数二次优化】
推荐阅读
- 亚马逊跨境电商热销产品?亚马逊爆款打造思路
- 直电结合“3个1”,做好私域流量的关键在哪里?
- 关于流量的三大误区,还不懂,就别玩互联网了
- 推荐 7 个热门电商 GitHub 项目
- ntopng 的安装源码安装,一个非常棒的流量监控工具
- 掘金私域电商,关键点在哪?
- 百度用seo优化获取流量才是终网站优化的目的
- 《和平精英》一局经典模式耗多少流量?
- 百度联盟深挖流量价值
- 私域流量”是个大金矿,但不是每个人都能淘到金
