大内存生产环境tomcat-jvm配置实践

话不多讲,奉上代码,分享经验,交流提高!

64G物理内存,8核CPU生产环境tomcat-jvm配置如下:

JAVA_OPTS=-server -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=2G 
-XX:+UseG1GC -Xms48G -Xmx48G -XX:MaxGCPauseMillis=200 
-XX:G1HeapRegionSize=8M -XX:InitiatingHeapOccupancyPercent=45 
-XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow 
-Doracle.jdbc.useNio=false -Dsun.zip.disableMemoryMapping=true 
-Dorg.apache.el.parser.COERCE_TO_ZERO=true 
-Djgroups.bind_addr=0.0.0.0

配置参数逐项说明

编号配置参数参数含义及备注说明
1-server

启用JVM的“服务器模式”优化,针对长时间运行的应用进行性能优化(如更高的吞吐量、更积极的即时编译)。适用于生产环境中的服务端应用,一定要作为第一个参数。

2-XX:MaxMetaspaceSize=4G​​​​设置Metaspace(元数据区,替代永久代)的最大大小为4GB,防止类元数据无限制增长导致内存溢出。​​注​​:Metaspace存放类定义、方法元数据等信息,默认无上限,需监控避免泄漏。
3

-XX:ReservedCodeCacheSize=2G

 

设置JIT编译后的本地代码缓存区大小为2GB,避免大型应用因代码缓存不足导致性能下降。注​​:代码缓存满时,JIT可能停止编译,影响性能。
4-XX:+UseG1GC​​启用G1(Garbage-First)垃圾收集器,适合大堆内存(如48G)和低延迟场景。​特点​​:分区域回收,优先处理垃圾最多的区域,减少停顿时间。
5-Xms48G -Xmx48G​​​​设置JVM堆内存的初始值(Xms)和最大值(Xmx)均为48GB,避免堆动态扩容带来的性能波动。生产建议​​:通常建议两者设为相等,避免堆大小调整导致GC频繁。
6-XX:MaxGCPauseMillis=200​​​​设定G1垃圾收集器的目标最大停顿时间为200毫秒,JVM会尽量调整GC策略以满足该目标。权衡​​:过低的设置可能导致更频繁的GC,影响吞吐量。
7-XX:G1HeapRegionSize=8M​​​​设置G1垃圾收集器的内存区域(Region)大小为8MB,较大的Region可能减少内存碎片。
​​建议​​:通常根据堆大小自动计算,显式设置需结合应用特性。
8-XX:InitiatingHeapOccupancyPercent=45​​​​当堆内存使用率达到45%时,启动G1的并发标记周期(Concurrent GC)。
​​目的​​:尽早回收垃圾,避免堆占用过高时触发Full GC。
9-XX:+HeapDumpOnOutOfMemoryError​​​​在发生内存溢出(OOM)时自动生成堆转储文件(java_pid<pid>.hprof),用于事后分析内存泄漏。​​文件位置​​:默认在JVM工作目录,可通过-XX:HeapDumpPath指定路径。
10-XX:-OmitStackTraceInFastThrow​​​​禁用JVM对频繁抛出异常的堆栈轨迹优化,确保所有异常都有完整的堆栈信息。​​背景​​:JVM默认会省略高频异常(如NullPointerException)的堆栈,可能影响调试。
11-Doracle.jdbc.useNio=false​​禁用Oracle JDBC驱动的NIO(非阻塞IO)模式,强制使用传统IO。​​适用场景​​:某些旧版本驱动或网络环境下NIO可能导致问题。
12-Dsun.zip.disableMemoryMapping=true​​​​禁止使用内存映射文件处理ZIP/JAR,改用流式读取,避免内存映射导致虚拟内存地址耗尽。​​典型问题​​:处理大量JAR文件时可能出现的OutOfMemoryError: Map failed。
13-Dorg.apache.el.parser.COERCE_TO_ZERO=true​​​​强制将空字符串转换为数值0(例如,表单提交的空字段解析为0),避免EL表达式类型转换异常。​​示例​​:${param.value} 若为空会返回0而非报错。
14-Djgroups.bind_addr=0.0.0.0​​设置JGroups(集群通信库)绑定所有可用网络接口(0.0.0.0),确保集群节点间正常通信。​​注​​:需确保防火墙开放相关端口。

 

 

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

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

相关文章

C++函数模板基础

1 函数模板 1.1 基础介绍 函数模板是一种特殊的函数定义,它允许你创建通用的函数,这些函数可以处理多种不同的数据类型,而不需要为每种数据类型都编写一个单独的函数。 在 C++ 里,函数模板的格式包含模板声明与函数定义两部分,其基本格式如下: template <typename…

mangodb的数据库与集合命令,文档命令

MongoDB的下载安装与启动&#xff0c; 一、MongoDB下载安装 1. 官网下载 打开官网&#xff1a;https://www.mongodb.com/try/download/community选择&#xff1a; 版本&#xff08;Version&#xff09;&#xff1a;选最新版或者根据需要选旧版。平台&#xff08;OS&#xff0…

flink端到端数据一致性

这里有一个注意点&#xff0c;就是flink端的精准一次 1.barrier对齐精准和一次非对齐精准一次 对比​​ ​​维度​​​​Barrier 对齐的精准一次​​​​Barrier 非对齐的精准一次​​​​触发条件​​需等待所有输入流的 Barrier 对齐后才能触发检查点 收到第一个 Barrier …

4月29号

级别越大,字体越小. CSS样式控制: 例如把日期设为灰色字体

PHP代码-服务器下载文件页面编写

内部环境的服务资源下载页面有访问需求&#xff0c;给开发和产品人员编写一个简洁的下载页面提供资源下载。直接用nginxphp的形式去编写了&#xff0c;这里提供展示index.php文件代码如下&#xff1a; <?php // 配置常量 define(BASE_DIR, __DIR__); // 当前脚本所在目录作…

MySQL基础关键_001_认识

目 录 一、概述 1.数据库&#xff08;DB&#xff09;分类 &#xff08;1&#xff09;关系型数据库 &#xff08;2&#xff09;非关系型数据库 2.数据库管理系统&#xff08;DBMS&#xff09; 3.SQL &#xff08;1&#xff09;说明 &#xff08;2&#xff09;分类 二、…

Shell、Bash 执行方式及./ 执行对比详解

Shell、Bash 执行方式及./ 执行对比详解 在 Linux 和 UNIX 系统的使用过程中&#xff0c;Shell 脚本是实现自动化任务、系统管理的重要工具。而在执行 Shell 脚本时&#xff0c;我们常常会用到bash命令以及./的执行方式&#xff0c;这两种执行方式看似相似&#xff0c;实则存在…

P1494 [国家集训队] 小 Z 的袜子 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 q q q 次查询&#xff0c;每次查询给定 ( l , r ) (l,r) (l,r). 你需要求出 2 ∑ i ≤ i < j ≤ r [ a i a j ] ( r − l ) ( r − l 1 ) \dfrac{2\sum…

解决vue3 路由query传参刷新后数据丢失的问题

前言&#xff1a;在页面刷新的时候&#xff0c;路由query数据会被清空&#xff0c;网上很多方法说query传参可以实现&#xff0c;反正我是没有实现 思路&#xff1a;将数据保存到本地&#xff0c;通过 “ &#xff1f;” 进行判断是否有数据&#xff0c;页面销毁的时候删除本地…

IIC小记

SCL 时钟同步线&#xff0c;由主机发出。 当SCL为高电平&#xff08;逻辑1&#xff09;时是工作状态&#xff0c;低电平&#xff08;逻辑0&#xff09;时是休息状态。SCL可以控制通信的速度。 SDA 数据收发线 应答位&#xff1a;前八个工作区间是一个字节&#xff0c;在SCL…

Linux[开发工具]

vim(多模式编辑器) vim是一个多模式的编译器!!命令模式是核心 vim 文件名 (数字)(进入编辑,光标处在第几行) esc切换模式 shift; >:(:wq保存并退出) 命令模式: 键盘的输入,默认被当做命令来看待 gg:光标快速定位到最开始 shiftgG:股那个表快速定位到最结尾 nshiftgG:光标…

hutools工具类中isNotEmpty与isNotBlank区分

基于以下两种情况。在判断的变量是String类型时&#xff0c; 判断是否为空&#xff0c;推荐使用isNotBlank(). 1. isNotEmpty 不会验证str中是否含有空字符串&#xff0c;而 isNotBlank方法会验证 public static boolean isNotEmpty(CharSequence str) {return false isEmpty…

算法相关概念

1 算法概述 1.1 算法概念 算法是特定问题求解步骤的描述&#xff0c;也是独立存在的一种解决问题的思想和方法 对于算法而言&#xff0c;实现他的编程语言无关紧要&#xff0c;重要的是思想和方法&#xff01;&#xff01;&#xff01; 公式&#xff1a;程序算法数据结构&a…

数据库基础与核心操作:从概念到实战的全面解析

目录 1 基本概念2 基本操作2.1 DCL2.2 DDL2.3 DML2.4 DQL(高级查询) 3 高级功能3.1 视图&#xff08;无参函数&#xff09;3.2 存储过程(有参函数)3.3 触发器 4 约束4.1 主键约束4.2 UNIQUE KEY&#xff08;唯一键约束&#xff09;4.3 FOREIGN KEY&#xff08;外键约束&#xf…

打造惊艳的渐变色下划线动画:CSS实现详解

引言&#xff1a;为什么需要动态下划线效果&#xff1f; 在现代网页设计中&#xff0c;微妙的交互效果可以显著提升用户体验。动态下划线特效作为一种常见的视觉反馈方式&#xff0c;不仅能够引导用户注意力&#xff0c;还能为页面增添活力。本文将深入解析如何使用纯CSS实现一…

【11408学习记录】考研英语语法核心:倒装句考点全解+真题演练

倒装句 英语语法总结——特殊句式倒装全部倒装介词短语形容词副词There be 部分倒装否定副词或词组位于句首only位于句首虚拟条件句省略if 每日一句词汇第一步&#xff1a;找谓语第二步&#xff1a;断句第三步&#xff1a;简化主句定语从句 英语 语法总结——特殊句式 倒装 …

upload-labs PASS 1-5通关

PASS-01 前端javascript检查 1&#xff0c;第一个提示javascript对上传的文件进行审查 2&#xff0c;javascript工作在前端页面&#xff0c;可以直接删除具有审查功能的代码 3&#xff0c;删除之后再上传一句话木马 上传成功&#xff0c;可以使用蚁剑进行连接&#xff0c;控制网…

GoogleTest:在Ubuntu22.04安装

1.首先克隆GoogleTest $ mkdir gtest $ cd gtest $ git clone git@github.com:google/googletest.git 克隆后的文件目录结构为 gtest/googletest$ tree -L 1 ├── build ├── BUILD.bazel ├── ci ├── CMakeLists.txt ├── CONTRIBUTING.md ├── CONTRIBUTORS ├─…

Transformer-LSTM-SVM回归

题目&#xff1a;Transformer-LSTM-SVM回归 文章目录 题目&#xff1a;Transformer-LSTM-SVM回归前言一&#xff1a;Transformer1. Transformer的原理1.1 Transformer的核心结构1.2 注意力机制1.4 位置编码1.5 损失函数 2. 完整案例 LSTMSVM 前言一&#xff1a;Transformer 1.…

AI正当时,国内AI HR领先厂商易路如何从“单点突破”到“全面融合”

所谓AI HR‌&#xff0c;是指将人工智能&#xff08;AI&#xff09;技术&#xff08;如机器学习、自然语言处理、大数据分析等&#xff09;应用于人力资源管理的各个环节&#xff0c;以提升效率、优化决策并改善员工体验。典型场景有&#xff1a; 在招聘、考勤、薪酬计算等重复…