万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • 大纲

  • 走近Java

  • 内存与垃圾回收

  • 字节码与类加载

  • 性能监控与调优

  • 监控与性能调优案例

    • JVM监控与性能调优案例概述
    • Tomcat堆溢出分析
    • 堆溢出
    • 方法区溢出
    • GC overhead limit exceeded
    • 线程溢出
    • 调整堆大小提高服务的吞吐量
    • JVM优化之JIT优化
    • 合理配置堆内存
    • CPU占用很高排查方案
    • G1并发执行的线程数对性能的影响
    • 调整垃圾回收器提高服务的吞吐量
      • 单核场景使用SerialGC
      • 单核场景使用ParallelGC
      • 多核场景使用ParallelGC
      • 多核场景使用ParNew + CMS
      • 多核场景使用G1
    • 日均百万级订单交易系统如何设置JVM参数
    • 内存泄漏与内存溢出
  • Java虚拟机
  • 监控与性能调优案例
2022-05-06
目录

调整垃圾回收器提高服务的吞吐量

# 调整垃圾回收器提高服务的吞吐量

也是使用优化案例1的Tomcat 例子,这次尝试使用不同的垃圾回收器,查看不同垃圾回收器的性能区别。

说明:Linux虚拟机内存都是8G,主要区别是CPU核心数不同。

# 单核场景使用SerialGC

设置Linux虚拟机的CPU核心为单核,Tomcat JVM参数设置(setenv.sh文件):

export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseSerialGC"
export CATALINA_OPTS="$CATALINA_OPTS -Xms30m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx30m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDetails"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MetaspaceSize=64m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDateStamps"
export CATALINA_OPTS="$CATALINA_OPTS -Xloggc:/home/wenwl/apache-tomcat-8.5.66/logs/gc.log"

查看GC情况以及压测吞吐量:

perf_case6_1.png

perf_case6_2.png

发生一次Full GC,吞吐量为2278.1/sec。

# 单核场景使用ParallelGC

在CPU核心为单核的基础上,使用并行垃圾收集器ParallelGC,JVM参数设置(setenv.sh文件):

export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseSerialGC"

查看GC情况以及压测吞吐量:

perf_case6_3.png

perf_case6_4.png

同样发生一次Full GC,吞吐量为2303.6/sec,吞吐量并没有明显变化。在单核使用并发垃圾收集器ParallelGC意义不大。

# 多核场景使用ParallelGC

将CPU核心该为4核,使用并行垃圾收集器Parallel GC。查看GC情况以及压测吞吐量:

perf_case6_5.png

perf_case6_6.png

同样发生一次Full GC,吞吐量为6814.8/sec。吞吐量大幅提升,直接翻了近3倍!!说明我们在多核机器上面采用并行收集器对于系统的吞吐量有一个显著的效果。

# 多核场景使用ParNew + CMS

在多核心情况下使用CMS GC:

export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseConcMarkSweepGC"

查看GC情况以及压测吞吐量:

perf_case6_8.png

perf_case6_7.png

发生两次Full GC,吞吐量为6765.9/sec。吞吐量较ParallelGC没有明显变化,但是各个百分比的平均的响应比ParallelGC较优。

# 多核场景使用G1

在多核心情况下使用G1:

export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC"

查看GC情况以及压测吞吐量:

perf_case6_9.png

perf_case6_10.png

没有发生Full GC,吞吐量为6546.2/sec。吞吐量较ParallelGC、CMS也没有明显变化,而在百分比的平均的响应比前两者优。

#JVM监控与性能调优案例
上次更新: 5/28/2023, 10:57:53 PM
日均百万级订单交易系统如何设置JVM参数

日均百万级订单交易系统如何设置JVM参数→

最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式