java8通用启动参数

news2024/11/15 5:00:35

由于默认的jvm参数不够合理,一般使用前都建议按需调整,这里尝试抛砖引玉,给出我个人工作中总结的经验,欢迎大家一起讨论

服务类型

  • http应用
  • dubbo应用

java版本

使用java8支持容器化的版本:Java 8 Update 261 (8u261)

单个服务实现的资源标准

高配版

Cpu:4

Memory:8196M

低配版

Cpu:2

Memory:4096M

注意:内存最低不能低于1500,原因参考下面的堆外内存计算

启动参数

通用启动参数,高低配均相同

// 堆大小,menLimit来源于部署参数
-Xms${menLimit}m -Xmx${menLimit}m 
// 存活与eden比例(默认)
-XX:SurvivorRatio=8
// 关闭偏向锁
-XX:-UseBiasedLocking
// 整型缓存
-XX:AutoBoxCacheMax=20000
// 与-Xmx == -Xms配合使用,在启动时提交所有内存
-XX:+AlwaysPreTouch
// 优化
-XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+ExplicitGCInvokesConcurrent
// OOM dump(需使用持久卷路径)
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/durability/log/$(date "+%Y-%m-%d_%H:%M:%S").hprof
// gc log(需设置日志收集)
-XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xloggc:/data/java/log/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M  
-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true 
-Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8

关于为何关闭偏向锁可以参考:从源码看世界:偏向锁从入门到放弃_usebiasedlocking-CSDN博客

高配版

gc回收器使用g1

// 元空间
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m 
// 栈大小
-Xss512k  
// G1回收器
-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1HeapRegionSize=2M

低配版

gc回收器使用cms

// 元空间
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m 
// 栈大小
-Xss256k  
// CMS回收器
-XX:+CMSScavengeBeforeRemark 
-XX:+UseConcMarkSweepGC 
-XX:+CMSParallelRemarkEnabled 
-XX:+UseCMSCompactAtFullCollection
-XX:+UseCMSInitiatingOccupancyOnly  
-XX:CMSInitiatingOccupancyFraction=80
-XX:+ParallelRefProcEnabled
-XX:+ExplicitGCInvokesConcurrent
// 增加新生代大小,减少YGC
-XX:NewRatio=1
-XX:MaxTenuringThreshold=5

内存计算

内存分为堆内/堆外,堆内固定大小,而堆外跟线程数、元空间、直接内存有关,因此通过计算堆外内存后反推到堆内大小

堆外内存

假设dubbo/tomcat线程数最大为1000,其它异步线程大概在500,即:

  • 线程栈最大内存:

高配版:(1000 + 500) * 512K = 750M

低配版:(1000 + 500) * 256K = 375M

-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m(low)/512m(high) ,即:

  • 元空间最大内存:256M(low)、512M(high)
  • 其它使用到的直接内存约为:128M

因此总量为

  • 高配版:750 + 512 + 128 = 1390M
  • 低配版:375 + 256 + 128 = 759M

堆内内存

假设容器内存剩余小于5%报警,预留3%作为缓冲容量

堆内存大小: 容器内存 * 92% - 堆外内存

docker镜像建议添加的功能

show-busy-java-threads

列出当前 java 进程 cpu 最高 top n 线程,使用方式

参考: github

arthas

Alibaba Java诊断利器

在控制台直接执行 arthas 命令即可

参考: github

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

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

相关文章

【吊打面试官系列-Dubbo面试题】Dubbo 如何优雅停机?

大家好,我是锋哥。今天分享关于 【Dubbo 如何优雅停机?】面试题,希望对大家有帮助; Dubbo 如何优雅停机? Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令&am…

小区来了个磨刀的

昨天下午,小区来了个磨刀磨剪子的。 我听见了喇叭吆喝声,就拿着一把菜刀下去了。 磨一把刀5块钱。 在磨刀的过程中,这位师傅就聊他的技术如何高超,什么水磨法远远超过磨刀石,总之让人感觉找他磨刀是正确的选择。 哎…

springboot宠物用品商城系统-前端-计算机毕业设计源码74346

摘要 基于微信小程序的宠物用品商城系统是一个集商品展示、在线购物、支付结算、用户管理等功能于一体的综合性电商平台。该系统充分利用微信小程序的便捷性和用户基础,为宠物爱好者提供了一个方便、快捷的购物体验。 同时,该系统还具备完善的用户管理功…

Windows Subsystem for Linux——安装桌面版Ubuntu

大纲 安装非桌面版操作系统安装桌面软件进入默认账号更新系统安装桌面软件安装xrdp查看IP地址 远程连接参考资料 在《Windows Subsystem for Linux——安装和使用》一文中,我们看到WSL只能安装非桌面版的Linux。 wsl --list --online但是桌面版的Linux其实是在非桌…

如何利用AI创作PPT?

最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 你要是做一张只需要交差用的PPT,用ChatGPT连一分钟都用不了,你看我画的这个流程图的黄色的箭头&#xff0…

【STM32】STM32单片机入门

个人主页~ 这是一个新的系列,stm32单片机系列,资料都是从网上找的,主要参考江协科技还有正点原子以及csdn博客等资料,以一个一点没有接触过单片机但有一点编程基础的小白视角开始stm32单片机的学习,希望能对也没有学过…

深度学习图像处理环境搭建

Anaconda安装 Anaconda介绍 Anaconda是一个用于科学计算和数据科学的开源发行版,它包含了许多流行的Python库和工具,旨在简化数据分析和机器学习任务的开发过程。Anaconda提供了一个集成的开发环境,包括Python解释器、包管理工具&#xff0…

打造安全自养号测评系统:亚马逊卖家必备的防关联技术

在搭建一个稳定的测评自养号系统过程中,账号的管理、底层环境、IP纯净度与维护确实是核心中的关键一环。以下几点是构建和运营高效、安全、稳定测评系统时必须重点考虑的因素: 1稳定的网络环境: 使用独立、纯净且未被标记的国外IP地址&…

【Python】趣味游戏编程练习记录

最近在阅读童晶写的《Python游戏趣味编程》,边学边记录吧,蛮有意思。 一、学习要点 1.安装游戏开发库pgzero pip install pgzero 2.导入游戏开发库及基础绘图操作 import pgzrun #导入游戏开发库 def draw(): #定义绘图函数screen.fill(white)#屏幕…

day14 Java基础——三元运算符(条件运算符)及小结

day14 Java基础——三元运算符(条件运算符)及小结 1.条件运算符(偷懒) package operator;public class Demo10 {public static void main(String[] args) {//x ? y : z//如果xtrue,则结果为y,否则结果为zint score …

vscode中使用 cmake 配置MSVC 编译C++代码, output输出日志存在中文乱码问题,排查

更改控制面板的时钟区域设置会导致2022版本的msvc编译不过出现bug-(无法解决问题) 通过打开setting解密搜索cmake,更改Cmake:Output Log Encoding(已解决) 乱码输出 解决乱码

15.4 zookeeper java client之Curator使用(❤❤❤❤❤)

Curator使用 1. 为什么使用Curator对比Zookeeper原生2. 集成Curator2.1 依赖引入curator-frameworkcurator-recipes2.2 `yml`配置连接信息2.3 CuratorConfig配置类2.4 业务:可重入锁和不可重入锁2.4.1 可重入锁和不可重入锁2.4.2 InterProcessMutex 可重入锁的使用2.4.3 InterP…

React——配置环境、ES6语法补充、Components

文章目录 架构设计前置知识DOM树 配置环境安装 create-react-app安装两个插件创建安装 nodejs仍然无法创建 下次需要创建新项目就使用这三行命令安装 bootstrap使用 bootstrap 包画图追求写 jsx短路原则绑定函数快捷键修改变量名箭头函数简写删除无用的文件写组件调用组件使用 …

办公必备!一键把PDF转换为PPT文件,只需这3款神器!

在当今数字化办公环境中,文件格式的转换已成为提高工作效率的关键因素之一。其中,PDF(便携式文档格式)和PPT(PowerPoint演示文稿)是两种广泛使用的文件格式。然而,有时我们需要将PDF文件转换为PPT格式,以便进行编辑或演示。 为方…

DaoCloud配置不同环境的流水线(Q)

在DaoCloud自动化部署时,不知道如何分别构建生产,测试环境镜像。 Dockfile文件里有 ARG BUILD_ENV"uat" RUN npm run build:${BUILD_ENV} 这样两行代码来区分环境打包的,ARG是用于指定传递给构建运行时的变量,可是…

windows 环境 Visual Studio 2022 新建 cmake 工程测试 cuda 代码编译

1. 参考博客: 1. 【CUDA】CUDA编译:https://blog.csdn.net/u011285477/article/details/104408296 2. 项目文件夹结构: c_cuda/cuda/CMakeLists.txtfoo.cufoo.cuhCMakeLists.txtmain.cpp3. 完整代码: 1. c_cuda/CMakeLis…

只有IP地址怎么部署HTTPS证书

只有IP地址可以申请部署SSL证书。SSL证书不仅能够通过域名进行申请,还可以通过IP地址进行申请和部署。在两种情况下,SSL证书的主要作用是确保网站或服务器与客户端之间的数据传输安全。以下是对SSL证书的相关介绍: 一、选择证书服务商并注册…

初普,stop,射频美容仪拆机图

初普,stop,射频美容仪拆机图

新手教程——HyperMesh静力学分析步骤

仿真技术的飞速发展,为产品在产前进行风险技术性评估,保证设计质量、提高产品设计水平提供了广阔的舞台。而有限元分析已经成为机械类产品仿真分析的关键手段。通过应用有限元分析,在生产制造前的设计阶段,运用现代技术充分反映设…

vue给数组对象赋值改变对象里面的数据,数据没有更新this.$set

替换数组startTime的值: 原数据 this.serviceTimeList.push({serviceTimeName: 服务时间段,startTime: this.startTime,endTime: this.endTime,currentDateStart: this.currentDate,currentDateEnd: this.currentDate}) this.$set(this.array, index, newValue); …