JVM 参数配置规范

废话不说,直接上干货!!!

JVM 规范:

参数备注/参数释义交易规范
JVM版本1.8.0_60以下,无法使用Pfinder 1.8.0_131之前,jvm无法感知docker的真实核数和内存大小,而是使用的宿主机的核数和内存必须1.8.0_60以上 推荐1.8.0_191以上
JVM GC方法ParallelGC:1.8默认,高吞吐量,响应时间不敏感 CMS:响应优先,堆内存8G以下优先选择 G1:响应优先,堆内存8G及以上选择C端应用:8G及以上选择G1,8G以下选择CMS B端应用:推荐使用ParallelGC
Xmx堆的最大值必须配置 小于8G的,不超过50% 8G的,最多可以设置6G 12G的,最多设置为8G 16G的,最多设置为12G 32G的,最多设置为24G
Xms初始堆的大小,也是堆大小的最小值必须配置 与Xmx一致
MaxDirectMemorySize堆外内存大小一般无需配置 使用了OHC等堆外缓存的需要配置,配置时需与架构师评审并压测
ParallelGCThreads并行GC时的线程数(ParallelGC、CMS、G1均适用) 此值过小,则stw时间变长,此值过大,影响吞吐量,CPU过高必须配置 =容器核数
ConcGCThreads并发标记时的线程数 并发标记时并没有stw,CPU密集型任务(CMS、G1才有并发标记步骤)限CMS、G1必须配置 ParallelGCThreads的20%~50% 一般为ParallelGCThreads/4或ParallelGCThreads/2
CICompilerCountJIT进行热点编译的线程数 CPU密集型任务必须配置(值要大于2) 推荐值如下: 1C容器 : 2 2C容器:2 4C容器 : 2~4 8C容器:2~4 16C容器 : 4~12
MetaspaceSize MaxMetaspaceSize元空间初始大小、元空间最大大小 如果未指定初始大小,默认是20m,应用启动时如果不够就会gc来扩容 元空间并不在虚拟机中,而是使用本机内存,因此受本机内存限制jdk1.8适用,必须配置 需要大于256M
Xmn NewRatioXmn:新生代内存大小 NewRatio:老年代与新生代与内存容量的比例 x:1 这2个参数只需设置其中1个即可,若都设置了,以Xmn为准CMS必须设置,只需配置其中1个参数;G1不要设置 Xmn=堆内存Xmx的 1/3 NewRatio=2
UseCMSInitiatingOccupancyOnly CMSInitiatingOccupancyFraction=xCMSInitiatingOccupancyFraction为堆内存占用率达到百分比时开始GC的阈值 默认不设置时,由JVM自动计算垃圾回收的周期CMS必须设置 推荐值70~80
UseCMSCompactAtFullCollection CMSFullGCsBeforeCompaction=xCMSFullGCsBeforeCompaction为配置fullGC时,进行了多少次fullGC之后对老年代进行压缩整理处理碎片CMS专用,不强制 推荐值1
HeapDumpOnOutOfMemoryError HeapDumpPath=/export/Logs/首次遭遇OOM时导出此时堆中相关信息 路径带“/”则为目录,否则为文件必须配置 文件目录需要为已存在的目录,若配置为具体文件,其所属目录也需要为已存在的目录

JVM配置示例

以下为交易应用容器规格分布和JVM参考配置:

序号容器规格容器数量JVM配置样例
18C16G43378使用G1: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms8192m -Xmx8192m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=4 -XX:CICompilerCount=4 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"
24C8G25506使用G1: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:CICompilerCount=2 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/" 使用CMS: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxDirectMemorySize=512m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:NewRatio=2 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:CICompilerCount=2 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/" 使用ParallelGC(1.8默认): export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:ParallelGCThreads=4 -XX:CICompilerCount=2 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"
316C32G24735使用G1(该应用使用了OHC堆外缓存,故配置了堆外内存大小): export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms20480m -Xmx20480m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=16 -XX:ConcGCThreads=8 -XX:CICompilerCount=8 -XX:G1HeapRegionSize=8m -XX:MaxDirectMemorySize=8192m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"
48C12G15690建议置换为8C16容器,参考8C16G的配置,注意按规范控制Xmx的大小
516C16G10908使用G1: export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms8192m -Xmx8192m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=16 -XX:ConcGCThreads=8 -XX:CICompilerCount=8 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/Logs/"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2的 element 表格单元格合并

<template><div><el-table show-summary :summary-method"getSummaries" :span-method"objectSpanMethod" :data"tableData" row-key"id" ref"tableDom" border><el-table-column label"序号&quo…

Zookeeper集群下载安装并启动

前提&#xff1a;准备三台虚拟机 集群启动修改配置&#xff08;3台服务器都要执行&#xff09; 1、下载Zookeeper安装包 Zookeeper的下载地址&#xff1a; https://zookeeper.apache.org/releases.html https://archive.apache.org/dist/zookeeper 2、上传Zookeeper安装包 …

【NLP】小项目:基于transformer的文本摘要

一、说明 本博客的主要焦点是使用“变压器”的非常高级的接口,即拥抱面管道。使用此界面,您将看到我们只需 1 或 2 行代码即可总结文本。 回顾什么是文本摘要以及我们在哪里使用它。如何使用拥抱面转换器执行文本摘要(只需几行代码)二、什么是文本摘要? 文本摘要是将大型文…

【golang】12、gin 源码解析

文章目录 快速使用返回响应路由匹配pathqueryMultipart/Urlencoded Form 解析请求MultipartFrom MiddleWare github.com/gin-gonic/gin 是 golang 的 web 框架&#xff0c;其用字典树做路由匹配、支持中间件&#xff0c;本文介绍其源码实现。 快速使用 package mainimport (&…

ylb-接口6验证手机号是否注册

总览&#xff1a; 1、service处理 在api模块下service包&#xff0c;创建一个UserService接口&#xff1a;&#xff08;根据手机号查询数据queryByPhone(String phone)&#xff09; package com.bjpowernode.api.service;import com.bjpowernode.api.model.User; import co…

ASL/CS系列音视频转换方案芯片,Typec拓展坞方案芯片

音视频单转方案芯片&#xff1a; CS5565 Typec转HDMI 8K 60HZ转换方案 可替代RTD2173 PS196 CS5801 HDMI转eDP/DP方案 可替代LT6711 CS5212 DP转VGA转换方案 可PIN TO PIN 替代RTD2166 CS5211 E…

❤️创意网页:HTML5 Canvas技术实现绚丽多彩的烟花特效

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

【java】【基础2】程序流程控制

目录 一、最经典的三种执行顺序 二、分支结构 2.1 if 2.2 switch 2.3 if与switch区别 三、循环结构 3.1 for循环 3.2 while循环 3.3 do-while循环 3.4 三种循环区别 3.5 补充知识&#xff1a;死循环 3.6 补充知识&#xff1a;循环嵌套 四、跳转关键字&#xff1a;br…

Mysql如何查询出两个日期之间的所有日期?

问题&#xff1a; 有时我们在生成一些时间轴类似的数据时&#xff0c;要求数据库不管有没有指定天的数据&#xff0c;都要生成该时间节点&#xff0c;可用mysql.help_topic来解决此类问题&#xff0c;通过序列和日期函数相结合来满足我们的业务需求。 例如&#xff1a;查询20…

spring启动一下就停止了

spring启动一下就停止了。 这个问题比较简单&#xff0c;百度了下&#xff0c;还是有些人问&#xff0c;记录下吧。 是因为没有引入spring-boot-starter-web包&#xff0c;或者该包没有生效。 有时spring-boot-starter-parent版本不对&#xff0c;就可能没生效&#xff0c;写明…

LeetCode | C++ 动态规划——123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV

目录 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV 123.买卖股票的最佳时机III 123题目链接 根据题意&#xff1a;最多可以完成 两笔 交易&#xff0c;即可以买卖股票一次&#xff0c;可以买卖两次&#xff0c;也可以不买卖 dp数组定义&#xff1a; 此时 一天就有五个…

Web开发的富文本编辑器CKEditor介绍,Django有库ckeditor_uploader对它进行支持,django-ckeditor安装方法及使用注意事项

当需要在网页应用程序中提供富文本编辑功能时&#xff0c;CKEditor是一个流行的选择。CKEditor是一个开源的JavaScript富文本编辑器&#xff0c;它提供了强大的功能和用户友好的界面&#xff0c;使用户可以轻松创建和编辑格式化的文本内容。 以下是CKEditor的一些主要特性&…

kakfa 2.4.1 java的生产者client在发送消息前分配消息属于哪个分区源码

标题是否不是很熟悉&#xff0c;面试不得必问啊 KafkaProducer 1、客户端暴露出来可以让开发人员调用的发送消息的方法send2、send实际调用私有方法doSend获取集群信息(并且得到这条数据写哪个分区)2.1获取kafka服务端集群某个topic的元数据方法waitOnMetadata2.2根据消息是否指…

rabbitMQ杂记

消息队列应用场景 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量 削锋等问题实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性&#xff1a; 解耦&#xff1a; 异步&#xff1a; 削峰&#xff1a; 常…

再见RestTemplate,Spring 6.1新特性:RestClient 了解一下!

在最近发布的Spring 6.1 M2版本中&#xff0c;推出了一个全新的同步HTTP客户端&#xff1a;RestClient。用一句话来让Spring开发者认识RestClient的话&#xff1a;像WebClient一样具备流畅API的RestTemplate。 所以&#xff0c;RestClient的使命就是淘汰已经有14年历史的RestTe…

实习经历总结

写在前面&#xff1a; 临毕业前突发奇想打算找实习&#xff0c;由于准备不是很充分加上没有经验&#xff0c;海投了一些岗位&#xff0c;方向主要是测试开发&#xff0c;base主要是北京&天津。 一些公司的面试&#xff1a; 当时投了很多大厂&#xff0c;美团&#xff0c…

elasticsearch高级功能之跨集群复制CCR

CCR的作用(Cross-Cluster Replication&#xff0c;跨集群复制)常用的场景如何使用工作原理源码分析 CCR的作用(Cross-Cluster Replication&#xff0c;跨集群复制) CCR功能允许用户在不同的Elasticsearch集群之间同步索引数据。这对于实现跨集群复制、数据备份、灾难恢复和多数…

3.12 Bootstrap 超大屏幕(Jumbotron)

文章目录 Bootstrap 超大屏幕&#xff08;Jumbotron&#xff09; Bootstrap 超大屏幕&#xff08;Jumbotron&#xff09; 下面将讲解 Bootstrap 支持的另一个特性&#xff0c;超大屏幕&#xff08;Jumbotron&#xff09;。顾名思义该组件可以增加标题的大小&#xff0c;并为登陆…

详解Windows安装分布式版本控制系统git

文章目录 前言下载安装相关链接 前言 git是一个分布式版本控制软件&#xff0c;最初由Linux创作者Linus Torvalds创作&#xff0c;并于2015年以GPL许可协议发布。git易于学习&#xff0c;占用空间小&#xff0c;性能却快如闪电&#xff0c;可以快速、 高效的管理从小到大的项目…

uniapp-轮播图swiper根据内容图片高度自适应,解决获取图片高度不准确的问题

需求&#xff1a;轮播图swiper根据内容图片高度自适应 但是通过uniapp uni.createSelectorQuery的方法获取图片高度不正确&#xff0c;比如图片是100&#xff0c;获取是200&#xff0c;this.$nextTick也不能解决&#xff0c;setTimeout到是能解决&#xff0c;但是不稳定&#…