Linux Tomcat JVM 参数调优

2023-10-27

——————————
Linux Tomcat JVM 参数调优
——————————

  1. 适用场景

    Tomcat 长期运行过程遇到Caused by: java.lang.OutOfMemoryError: PermGen space或java.lang.OutOfMemoryError: Java heap space错误。
    
  2. 异常原因

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这块内存主要是被JVM存放Class和Meta信息的。
    Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同。
    GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
    这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

Java heap space:

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

Heap size 的大小是Young Generation 和Tenured Generaion 之和。JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。

Heap Size 最大不要超过可用物理内存的80%

一般的要将-Xms和-Xmx选项设置为相同(java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源)。而-Xmn为1/4的-Xmx值。

个人对上面这句话做个补充,“推荐Xms和Xmx设置值为相同”,并不适用于所有情况,要根据实际情况而定。 当服务器多个tomcat同时运行时,(Xms要肯定小于Xmx)建议每个tomcat 设置 Xms = 1/2Xmx或2/3Xmx。理由是当某个tomcat高峰时,可以弹性分配内存空间。无可避免以上重新分配分隔内存的效率问题。

  1. 解决办法

    修改TOMCAT_HOME/bin/catalina.sh文件:

# OS specific support.  $var _must_ be set to either true or false.
JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"

cygwin=false

darwin=false

加入以上红色JAVA_OPTS行记录后重启tomcat服务,其中JAVA_OPTS各参数的具体数值大小须根据实际服务器物理内存大小进行分配。

  1. 监控JVM

    4.1 查看jdk安装路径

可选择的命令:

[root@iZ25bzw04lpZ /]# whereis java
java: /usr/bin/java /usr/share/java

[root@iZ25bzw04lpZ /]# echo $JAVA_HOME
/usr/java/jdk1.7.0_67

[root@iZ25bzw04lpZ /]# which java
/usr/java/jdk1.7.0_67/bin/java

[root@iZ25bzw04lpZ /]# echo $PATH
/usr/java/jdk1.7.0_67/bin:/usr/local/sbin:/usr/local/bin:/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux Tomcat JVM 参数调优 的相关文章

随机推荐

  • 【docker-compose】从构建镜像到一键运行Java项目

    先来思考个问题 新机器跑一个常规springboot项目要几步 1 下载并配置java环境 mysql环境 redis环境 6步 2 初始化mysql数据库 导入sql文件 2步 3 下载jar包 启动 2步 大概分为零零碎碎的十多步 每块
  • EasyExcel使用教程-实现页面中批量导入导出数据-详解

    EasyExcel介绍 EasyExcel是阿里巴巴开源的一个excel处理框架 以使用简单 节省内存著称 EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中 而是从磁盘上一行行读取数据
  • PhpStorm 部署web到apache 教程

    1 Edit Configrations 进去之后点server 因为是本地部署 所以写localhost就可以 其他不用动 之后下面有一个start Url 意思就是你点击运行时浏览器要打开的那个界面 我们写项目名称就可以 2 Tool
  • iframe跨域没有权限_浅谈跨域威胁与安全

    WEB前端中最常见的两种安全风险 XSS与CSRF XSS 即跨站脚本攻击 CSRF即跨站请求伪造 两者属于跨域安全攻击 对于常见的XSS以及CSRF在此不多谈论 仅谈论一些不太常见的跨域技术以及安全威胁 一 域 域 即域名对应的网站 不同
  • 阿里云服务器和轻量云服务器对比有什么区别?

    阿里云轻量应用服务器和云服务器ECS有什么区别 ECS是专业级云服务器 轻量应用服务器是轻量级服务器 轻量服务器使用门槛更低 适合个人开发者或中小企业新手使用 可视化运维 云服务器ECS适合集群类 高可用 高容灾企业级架构 使用相对于轻量更
  • 详细解析STM32的时钟系统

    STM32的时钟系统 一 时钟系统框图 1 1 STM32F10x 1 2 STM32F40x 二 时钟系统 2 1 STM32F10x时钟源 HSI RC振荡器 频率8MHz 精度不高HSE 外接石英 陶瓷晶振 4MHz 16MHz LS
  • java的作用域

    文章目录 作用域 细节 注意 作用域 在java中 主要变量就是成员变量和局部变量 一般局部变量指的是成员方法中定义的变量 作用域的分为全局变量和局部变量 全局变量的作用域在整个类体 除了属性之外的都是局部变量 作用域只能用于某块 全局变量
  • 软件测试质量度量指标

    软件测试质量度量指标 度量模块 度量指标 统计方法 度量说明 产品完成度 1 需求通过率 已通过需求 已计划需求 体现需求的完成度 也常可以统计为 测试用例通过数 计划的测试用例总数 即默认用例覆盖是完全的 2 功能点通过率 已通过功能点
  • 安装驱动时出现“INF中的服务安装段落无效”

    今天安装ti开发板的驱动 在安装虚拟串口时出现 INF中的服务安装段落无效 以致驱动未安装成功 接下来我就说说我的解决过程 因为提示的是 inf中的 了解驱动的就知道有个扩展名为inf的文件 于是准备 打开驱动目录中的inf文件 如下图 有
  • 【延期至12月】2022年网络安全国际研讨会(CSW2022)

    延期至12月 2022年网络安全国际研讨会 CSW2022 重要信息 会议网址 www cybersecurityworkshop org 会议时间 2022年12月16 18日 召开地点 杭州 截稿时间 2022年10月20日 录用通知
  • 商业不是战争

    我在一个大客户那里工作的时候经常想这样一件事 他们 以及国内很多 IT或者非IT 企业 讲军事化管理 讲服从命令 为什么我总觉得这事不对 到底不对在什么地方 我想出来的结论是 商业不是战争 第一 商业的特点是negotiatable 战争是
  • 单链表中间值(经典案例,5分钟解决)

    一 题目描述 给定一个单链表 但不知该表的大小 现要求只遍历一次 找出位于单链表中间的值 输入 1 8 7 6 4 5 3 1 输出 6 样例输入 Copy 1 2 4 8 9 6 3 1 0 样例输出 Copy 9 二 实现方法 普通方法
  • 创新零售,京东重新答题?

    继新一轮组织架构调整后 京东从低价到下沉动作不断 新成立的创新零售部在京东老将闫小兵的带领下悄然完成了整合 近日 京喜拼拼已改名为京东拼拼 与七鲜 前置仓等业务共同承载起京东线上线下加速融合的梦想 同时 拼拼的更名 也被外界解读为京东重新点
  • 关于jdbc常见错误

    版本问题 如果运行时控制台报错 Exception in thread main com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException Could not
  • k8s-pod的亲和度调度

    文章目录 1 Node Affinity 1 1 node节点的预制标签 1 2 自定义标签 1 2 1 给node增加标签 1 2 2 修改label 1 2 3 修改label 1 3 Require 1 4 Perferred 1 3
  • 商品消费计费课程设计

    具体代码如下 商品销售计费显示系统 输入品种 数量 单价 计算并显示顾客应付的款数 并打印清单 include
  • metasploitable2

    nmap使用 nmap sP IP段 掩码 范围内ping通的所有主机 通过抓包只看到发了arp包 还没有找全局域网内所有主机 nmap sP 192 168 43 0 24 PS 让nmap使用SYN包而不是ACK包来对目标主机进行扫描
  • pyinstaller 打包程序 出现错误的解决方法

    打开命令窗口进入到程序所在目录下 1 使用命令pyinstaller p C Python27 Lib site packages zmq SpiderTaskDistributor py 打包程序 p参数是添加的pyinstaller打包
  • Quartz简单应用(Springboot环境)

    需求 在项目中免不了会使用定时任务来执行一些自动化的操作 简单的定时任务可以在方法上加上 Schedule的注解来执行定时任务 但是如果有多个同级的模块在不同的时间点执行同一个方法 就没办法仅仅使用 Schedule来执行了 侃场景 现在某
  • Linux Tomcat JVM 参数调优

    Linux Tomcat JVM 参数调优 适用场景 Tomcat 长期运行过程遇到Caused by java lang OutOfMemoryError PermGen space或java lang OutOfMemoryError