Tomcat 优化
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,1. 配置优化1.1. server.xml 配置[root@localhost ~]# cat server.xml...... # 客户连接超时的时间, 如果为 -1 表示不限制建
千家信息网最后更新 2025年02月02日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, 单位 KB
1.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安全错误
数据库的锁怎样保障安全
红警2数据库app
虹膜识别技术数据库制作流程图
VB软件开发笔试题
清楚mac电脑数据库
BIOS服务器安装系统
分布式数据库主键怎么生成
软件开发生产率低
市聚龙网络技术有限公
网络安全关于国家安全的事件
r星服务器退出
首都机场街道软件开发
软件开发及测试的申请
戴尔服务器T110
网络技术对企业管理的影响
悟空日记软件开发
湖南常用软件开发单价
中国矿业大学图书馆数据库
网络技术人员的职责
数据库只查询权限
自建ca服务器申请通配符证书
考三级网络技术有什么用
网络安全调查结果分析
北京一对一网络技术咨询指导
无数据库搜索技术
业务系统与服务器的区别
关于如何看待网络安全
快速进入sae数据库
chrane数据库检索视频
中国国家网络安全宣传周征文开头
少年网络安全手抄报