Tomcat 优化
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,1. 配置优化1.1. server.xml 配置[root@localhost ~]# cat server.xml...... # 客户连接超时的时间, 如果为 -1 表示不限制建
千家信息网最后更新 2025年12月03日Tomcat 优化
1. 配置优化
1.1. server.xml 配置
[root@localhost ~]# cat server.xml...... # 客户连接超时的时间, 如果为 -1 表示不限制建立客户连接的时间, 单位毫秒1.2. Tomcat IO 优化
Tomcat 连接器的三种方式: bio、nio 和 apr, apr 性能最优, bio 性能最差BIO: 同步并阻塞, 服务器实现模式为一个连接一个线程(默认的工作模式)# NIO 的工作模式NIO: 同步非阻塞(JDK1.4 以上版本) # APR 的工作模式APR: 从操作系统级别来解决异步的 IO 问题, 大幅度的提高性能, JDK7 开始支持, 需要安装官方的插件才能使用http://tomcat.apache.org/native-doc/ # 插件下载yum -y install tomcat-native # 或者使用 yum 安装, 在 epel 中1.3. context.xml
[root@localhost ~]# cat context.xml# 设置上下文最大可用缓存 cachingAllowed 指定允许开启缓存cacheMaxSize 指定最大可用缓存, 默认 10M, 单位 KB1.4. catalina.properties
[root@localhost ~]# cat catalina.properties# 禁用 TLDs 扫描tomcat.util.scan.StandardJarScanFilter.jarsToSkip = ****2. JVM 优化
JVM 优化主要修改 catalina.sh 脚本里面 JAVA_OPTS 和 CATALINA_OPTS 的参数JAVA_OPTS: 设置 JVM 相关运行参数的变量,用于Java运行时选项start, stop 或 run 命令执行CATALINA_OPTS: 设置 Tomcat 相关运行参数的变量, 用于 Java 运行时选项 start, run 命令执行
JVM 内存划分分为新生代(Young Generation)、老年代(Old Generation)、永久代(Permanent Generation)堆内存(Heap) = 新生代 + 老年代, 非堆内存 = 永久代
CATALINA_OPTS="${CATALINA_OPTS} -server -Xms6000M -Xmx6000M -Xss512k -XX:NewSize=2250M -XX:MaxNewSize=2250M -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=15 -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"-server 启动速度慢, 运行时性能和内存管理效率高-clien 启动速度快, 运行时性能和内存管理效率低-Xms 指定 Java 初始化堆大小, -Xms 与 -Xmx 设成一样的值, 避免 JVM 反复重新申请内存, 默认值为物理内存的 1/64, 空余堆内存小于 40% 时 JVM 增大堆直到 -Xmx 的最大限制-Xmx 指定 Java 最大堆大小, 最大值设置为可用内存的最大值的 80%, 空余堆内存大于 70% 时 JVM 减少堆直到 -Xms 的最小限制-Xss 指定每个 Java 线程堆栈大小, 每个线程堆栈大小为 1M, 线程大小不建议超过 1M-XX:NewSize 指定新生代内存大小-XX:MaxNewSize 指定最大新生代内存大小-XX:+AggressiveOpts 指定每当 JDK 版本升级时, JVM 都会使用最新加入的优化技术-XX:+UseBiasedLocking 指定优化线程锁对线程处理自动进行最优调配-XX:+DisableExplicitGC 指定程序代码中不允许显示调用 System.gc()-XX:+UseConcMarkSweepGC 指定老年代为并发收集(CMS GC), CMS GC在GC次数增多的情况下, 每次GC的响应时间很短(几毫秒)-XX:+UseParNewGC 指定新生代采用多线程并行回收-XX:MaxTenuringThreshold 指定垃圾最大年龄, 设置为 0 新生代对象不经过 Survivor 区, 直接进入老年代, 对于老年代比较多的应用(需要大量常驻内存的应用)可以提高效率; 设置为一个较大值新生代对象会在 Survivor 区进行多次复制, 可以增加对象在新生代的存活时间, 增加在新生代即被回收的概率, 减少 Full GC 的频率。该参数只有在串行 GC 时才有效-XX:+CMSParallelRemarkEnabled 指定使用 UseParNewGC 的情况下, 尽量减少 Mark 的时间-XX:LargePageSizeInBytes 指定 Java Heap 的分页页面大小, 内存页的大小不可设置过大, 会影响 Perm 的大小-XX:+UseFastAccessorMethods 指定使用 Get, Set 方法转成本地代码, 原始类型的快速优化-XX:+UseCMSInitiatingOccupancyOnly 指定在 Oldgeneration 在使用了初始化的比例后 Concurrent Collector 启动收集-Duser.timezone=Asia/Shanghai 指定时区-Djava.awt.headless=true 兼容 Linux/Unix 下图形报表显示输出-Xmn 指定新生代内存大小, 增大新生代后将会减小老年代大小, 对系统性能影响较大, Sun 官方推荐配置为整个堆的 3/8-XX:CMSInitiatingOccupancyFraction 当堆满之后, 并行收集器开始进行垃圾收集, 与 Xmn 关联使用-XX:+CMSIncrementalMode 指定开启 CMS 收集器增量模式, 增量模式经常暂停 CMS 过程, 对应用程序线程作出完全的让步-XX:+UseSerialGC 指定使用串行收集器, 老年代使用串行收集-XX:+UseParallelGC 指定使用并行收集器, 新生代使用并行收集-XX:+UseParallelOldGC 指定老年代垃圾收集方式为并行收集-XX:ConcGCThreads 指定并发 CMS 过程运行时的线程数, 如果未设置, JVM 会根据并行收集器中的 -XX:ParallelGCThreads 参数的值来计算出默认的并行 CMS 线程数-XX:ParallelGCThreads 指定并行收集器的线程数,建议配置与CPU数目相等-XX:OldSize 指定老年代内存大小设置字符集编码:-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8-Djavax.servlet.request.encoding=UTF-8-Djavax.servlet.response.encoding=UTF-8-Dfile.encoding=UTF-8-Duser.country=CN-Duser.language=zh
内存
大小
新生
新生代
线程
年代
最大
运行
性能
模式
收集器
参数
时间
配置
垃圾
对象
效率
缓存
工作
应用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市瑞美网络技术有限公司
在线转换的文件会上传服务器吗
山西网络时间同步服务器云空间
淄博专业软件开发
vb 数据库 数组
通州西集网络安全员招聘
网络安全监测装置通过率
给服务器设置公网ip
壹孕网深圳网络技术有限公司
自动化和网络安全
网络安全意识形势发言总结
关于网络安全的歌曲有哪些
数据库怎么传到前端页面上
计算机网络技术英文怎么说
软件开发 军标
青海互联网网络技术服务代理品牌
电厂网络安全会议
普陀区微型软件开发设计标准
怎么加强网络安全系统建设
施肥服务器
我的世界端游无法进入服务器
初入职软件开发工程师交付成果
战锤3无法访问服务器怎么办
通州西集网络安全员招聘
网络技术基础演示互动
猫和老鼠服务器排位
网络安全防御概念
sci数据库使用2020
方舟手游pvp官方服务器
sql删除数据库失败