Tomcat 优化
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,1. 配置优化1.1. server.xml 配置[root@localhost ~]# cat server.xml...... # 客户连接超时的时间, 如果为 -1 表示不限制建
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
嘟嘟瓜互联网科技
中国互联网科技发展
亿策互联网科技
火传媒上海互联网科技
哈尔滨新华互联网科技学院
团飞科技与伯堂互联网服务平台
湖北码尼互联网科技有限公司电话
智腾互联网科技有限公司
消费医药和互联网科技
链环科技传统企业怎么转型互联网
互联网保险科技创业
互联网行业科技股
工业互联网等科技实现智能化赋能
徐州市互联网科技有限公司
北京市互联网新科技
广州梦谷互联网科技有限公司领导
福州德业互联网科技
艺电能源互联网科技有限公司招聘
唯美互联网科技
中国主要互联网科技公司
互联网科技公司
中智农互联网科技
港股互联网科技股
撒么互联网科技公司
央行互联网金融科技公司
阿里互联网科技公司
福建科技产业互联网发展
浙南科技城互联网大厦招聘
互联网科技手抄报图片
山东蛋芒互联网科技有限公司