JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

线上服务的JVM配置竟然这么多(线上jvm监控)

wys521 2025-03-14 21:50:41 精选教程 22 ℃ 0 评论

今天上线上系统,把了一个线上已经运行很久的服务的JVM参数配置。平时服务都没有出现过JVM问题,所以对这些配置都没怎么关注。

心血来潮地扒了下,才发现竟然配置了这么多。

线上配置

-Djava.awt.headless=true 
-Djava.net.preferIPv4Stack=true 
  -server 
  -Xmx6g 
  -Xms6g 
  -Xmn2560m 
  -XX:PermSize=512m
  -XX:MaxPermSize=512m 
  -Xss256k 
  -XX:+DisableExplicitGC 
  -XX:+UseConcMarkSweepGC 
  -XX:+CMSParallelRemarkEnabled 
  -XX:+UseCMSCompactAtFullCollection 
  -XX:LargePageSizeInBytes=128m 
  -XX:+UseFastAccessorMethods

详解

  • -Djava.awt.headless=true
    Headless 模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。

因为所有的系统都是运行在Centos的服务器上,这些服务器本身是没有这些设备的。所以开启这个可以告诉系统不要指望硬件帮忙了,只能依靠系统的计算能力来模拟这些特性。


  • java.net.preferIPv4Stack=true
    设置只支持IPV4。比如影响机器名的获取。

这个确保服务注册时,使用统一规则机器名进行注册,避免一些异常问题的产生。


  • -server

JVM有两种模式:server模式和client模式。

server模式启动速度不如client模式,但启动后的性能会有很大的提升。服务本身就是更关注运行中的性能,启动的过程稍微慢点是可以 接收的。


  • -Xms6g 分配的初始堆内存6g
  • -Xmx6g 分配的最大堆内存6g
  • -Xmn2560m 新生代大小
  • -XX:PermSize=512m 永久代最初始内存
  • -XX:MaxPermSize=512m 永久代最大内存
  • -Xss256k 设置每个线程可使用的内存大小,即栈的大小
  • -XX:+DisableExplicitGC 禁用代码中的手动 System.gc()
  • -XX:+UseConcMarkSweepGC CMS垃圾回收器
  • -XX:+CMSParallelRemarkEnabled 开启并行remark,加快remark的速度
  • -XX:+UseCMSCompactAtFullCollection 启用压缩
  • -XX:LargePageSizeInBytes=128m 指定 Java heap的分页页面大小
  • -XX:+UseFastAccessorMethods get,set 方法转成本地代码(对于jvm来说是冗余代码,jvm将进行优化)

总结

线上的CMS垃圾收集器来降低STW时间,保证响应速度。

配置初始堆内存和最大堆内存来避免动态扩容、缩容带来的性能抖动。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表