一、GC
- 目的:保证系统高吞吐,低延迟
- 方向:降低gc频率,减少stw时间
- 手段:垃圾收集器选择,内存分配占比,触发gc阈值调整
二、分析
- 算法:
年轻代:复制
老年代:标记-整理、标记-清除(内存碎片)
- 垃圾收集器:
serial/serialOld:单线程。复制/标记-清除
parallelScavenge/parallelOld(JDK8默认):多线程。复制/标记-清除
parallel/CMS:多线程。复制/标记-整理
G1(JDK9默认):分区。标记-整理
- 现象
-
新生代gc后存活对象增多:若增大新生代空间,将导致minorGC停顿时间更长。
-
新生代gc后存活对象变化不大:考虑降低GC频率
-
新生代eden区gc后存活对象不多:可考虑降低新生代晋升老年代阈值,减少复制成本的发生
-
老年代gc后存活对象变化不大:考虑充分利用老年代空间,适当提高触发gc阈值。需注意新生代回收停顿时间会随着老年代空间占用率上升而延长。
- 总结
- 若增大新生代空间,将可能导致延迟时间增长。若减少新生代空间,将可能导致gc频率增加。可考虑调整新生代晋升老年代阈值(默认15)。如-XX:MaxTenuringThreshold=15
- 新生代回收停顿时间随着老年代空间占用率上升而延长。若采用CMS,可考虑适当降低老年代触发gc的阈值。如-XX:CMSInitiatingOccupancyFraction=80
三、名词解释
- QPS:每台服务器每秒查询请求次数,衡量性能
- TPS:每秒事务。一次事务指客户端向服务器发送请求,并接收到服务器端的响应。
- RT:响应时间。一次事务的花费时间。一般指平均
- 并发数:系统能同时处理的请求数量,反应系统负载能力
- 吞吐量:系统承压能力。
-
QPS(TPS)= 并发数/平均响应时间
-
并发数 = QPS*平均响应时间
-
PV:即页面浏览量或点击量。衡量网站用户访问的网页数量
-
UV:指通过互联网访问、浏览这个网页的自然人
-
VV:用以统计所有访客1天内访问网站的次数。同一访客1天内可能有多次访问行为,访问次数累计
-
独立UV是以浏览器cookie为依据的,只要cookie不清除,同一天00:00-24:00内,2个人用同一台电脑的同一个浏览器,用不同ID登陆知乎,对于统计工具来说(比如谷歌分析工具),都只算一个UV