JVM 优化

root
233
文章
0
评论
2020年1月9日16:00:08 评论 3045字阅读10分9秒

JVM 配置方法(根据需求需求)

  • 最常见的JVM配置当属内存分配,因为在绝大多数情况下,JVM默认分配的内存可能不能够满足我们的需求,特别是在生产环境,此时需要手动修改Tomcat启动时的内存参数分配。
  • Tomcat是一款Java应用,那么JVM的配置便与其运行性能密切相关,而JVM优化重点集中在内存分配GC策略的调整上,因为内存会直接影响服务的运行效率和吞吐量,JVM垃圾回收机制则会不同程度地导致程序运行中断。可以根据应用程序的特点,选择不同的垃圾回收策略,调整JVM垃圾回收策略,可以极大减少垃圾回收次数,提升垃圾回收效率,改善程序运行性能。

JVM内存模型图:

 

JVM内存配置选项

  • windows 平台(catalina.bat):
  • set JAVA_OPTS=‐server ‐Xms2048m ‐Xmx2048m ‐XX:MetaspaceSize=256m -
    XX:MaxMetaspaceSize=256m ‐XX:SurvivorRatio=8
  • linux 平台(catalina.sh):
  • JAVA_OPTS="‐server ‐Xms1024m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐XX:MaxMetaspaceSize=512m ‐XX:SurvivorRatio=8"

参数说明 :

  • -Xms:               堆内存的初始大小(1024m相当于1G)
  • -Xmx:              堆内存的最大大小(这两项大小设置一样,设置为可用内存的80%
  • -Xmn:              新生代的内存大小,官方建议是整个堆得3/8。
  • -XX:MetaspaceSize:          元空间内存初始大小, 在JDK1.8版本之前配置为 -                             XX:PermSize(永久代)
  • -XX:MaxMetaspaceSize:   元空间内存最大大小, 在JDK1.8版本之前配置为 -XX:MaxPermSize(永久代)
  • -XX:InitialCodeCacheSize - XX:ReservedCodeCacheSize: 代码缓存区大小
  • -XX:NewRatio: 设置新生代和老年代的相对大小比例。这种方式的优点是新生代大小会随着整个堆大小动态扩展。如 -XX:NewRatio=3 指定老年代 /新生代为 3/1。 老年代占堆大小的 3/4,新生代占 1/4 。
  • -XX:SurvivorRatio:指定伊甸园区 (Eden) 与幸存区大小比例。如-XX:SurvivorRatio=10 表示伊甸园区 (Eden)是 幸存区 To 大小的 10 倍 (也是幸存区 From的 10 倍)。 所以, 伊甸园区 (Eden) 占新生代大小的 10/12, 幸存区 From 和幸存区 To 每个占新生代的 1/12 。 注意, 两个幸存区永远是一样大的。

修改好以后可以,再次用ab命令测试3-5遍,取平均值,看看效果如何

进行查看详细的jvm内存情况:

  • [root@kk /]# ps -ef |grep java
    root      1386  4897  0 22:51 pts/0    00:00:00 grep --color=auto java
    root     28465     1  0 Jan08 ?        00:03:46 /usr/bin/java -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start
  • 用抓取的java进程号,jmap命令进行查看内存(大概会有一个这样的表)
  • #没有jmap命令就安装一下
    yum install -y java-1.8.0-openjdk-devel-debug
  • [root@kk /]# jmap -heap 28465
    Attaching to process ID 28465, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.232-b09
    
    using thread-local object allocation.
    Parallel GC with 2 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 0
       MaxHeapFreeRatio         = 100
       MaxHeapSize              = 994050048 (948.0MB)
       NewSize                  = 20971520 (20.0MB)
       MaxNewSize               = 331350016 (316.0MB)
       OldSize                  = 41943040 (40.0MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:
    PS Young Generation
    Eden Space:
       capacity = 157286400 (150.0MB)
       used     = 124317056 (118.5579833984375MB)
       free     = 32969344 (31.4420166015625MB)
       79.03865559895833% used
    From Space:
       capacity = 14155776 (13.5MB)
       used     = 8112320 (7.73651123046875MB)
       free     = 6043456 (5.76348876953125MB)
       57.30749059606482% used
    To Space:
       capacity = 16777216 (16.0MB)
       used     = 0 (0.0MB)
       free     = 16777216 (16.0MB)
       0.0% used
    PS Old Generation
       capacity = 52953088 (50.5MB)
       used     = 22250152 (21.219398498535156MB)
       free     = 30702936 (29.280601501464844MB)
       42.01861088818843% used
    
    21942 interned Strings occupying 1932104 bytes.

额,暂告一段落,........GC垃圾回收正在学习中,未完待续ing...............

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年1月9日16:00:08
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
tomcat优化 Tomcat

tomcat优化

tomcat优化  Tomcat 性能调优 对于系统性能,用户最直观的感受就是系统的加载和操作时间,即用户执行某项操作的耗时。从更为专业的角度上讲,性能测试可以从以下两个指标量化。 响应时间:如上所述...
tomcat安全 Tomcat

tomcat安全

tomcat安全 配置安全 1.删除webapps目录下的所有文件 2.禁用tomcat管理界面 3.注释或删除tomcat-users.xml文件内的所有用户权限; 4.更改关闭tomcat指令或禁...
tomcat多实例与集群,Session共享问题 Tomcat

tomcat多实例与集群,Session共享问题

tomcat多实例与集群 先说tomcat多实例, 这个很简单,就简单说一下,一台web服务器上部署好一次tomcat做好了优化以后,可以当作模板及,进行打包压缩,保存好,当需要添加多台tomcat时...
web.xml详细组件 Tomcat

web.xml详细组件

web.xml详细组件 web.xml 是web应用的描述文件, 它支持的元素及属性来自于Servlet 规范定义 。 在Tomcat 中, Web 应用的描述信息包括 tomcat/conf/web...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: