当前位置 博文首页 > xinyi_java的博客:Tomcat7优化
目录
1、目的
2、服务资源配置
3、优化配置
3.1?配置 tomcat?管理员账户
?3.2 Tomcat的3种运行模式
3.2.1 启动NIO模式
3.3.1?开启并且使用
3.3.2 参数说明
3.3.3 最佳实践
3.4 连接器(Connector)
3.4.1 通用属性
4 NIO 的具体配置
4.1 最佳实践
5 JVM参数的优化
5.1?JVM?内存模型
5.2 JVM参数
5.3 在tomcat中设置jvm参数
5.3.1 windows
5.3.2 Linux
通过优化 tomcat 提高网站的并发能力。
服务器所能提供 CPU、内存、硬盘的性能对处理能力有决定性影响。
在 conf/ tomcat-users.xml 下添加用户:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/>
启动tomcat
登录查看信息 : http://127.0.0.1:8080/
?
?1 、 bio
默认的模式,性能非常低下,没有经过任何优化处理和支持. ???
2 、 nio(new IO)
利用 java 的异步 io 护理技术,no blocking IO 技术.
3 、 apr
安装起来最困难,但是从操作系统级别来解决异步的 IO 问题,大幅度的提高性能.
修改 server.xml 里的 Connector 节点,修改 protocol 为
org.apache.coyote.http11.Http11NioProtocol
?执行器(线程池)
在 tomcat 中每一个用户请求都是一个线程,所以可以使用线程池提高性能
配置
?
?
?
?
Connector 是 Tomcat 接收请求的入口,每个 Connector 有自己专属的监听端口
Connector 有两种:HTTP Connector 和 AJP Connector
?
?
?
?
?
?
?
适当调整 Tomcat 的运行 JVM 参数可以提升整体性能。
?有如下原因可能导致Full GC:
1.年老代(Tenured)被写满
2.持久代(Perm)被写满
3.System.gc()被显示调用
4.上一次 GC 之后 Heap 的各域分配策略动态变化
修改文件:bin/catalina.sh
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:MaxTenuringThreshold=50
-XX:+DisableExplicitGC"
参数说明:
1、 file.encoding 默认文件编码
2、 -Xmx1024m 设置 JVM 最大可用内存为 1024MB
3、 -Xms1024m 设置 JVM 启动时初始分配的内存大小为 1024m。此值可以设置与-Xmx 相同,以避免每次
垃圾回收完成后 JVM 重新分配内存。
4、 -XX:NewSize 设置年轻代大小
5、 XX:MaxNewSize 设置最大的年轻代大小
6、 -XX:PermSize 设置永久代大小 热部署时会出现永久代溢出
7、 -XX:MaxPermSize 设置最大永久代大小
8、 -XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与终身代的比值(除去永久代)。设置为 4,
则年轻代与老年代所占比值为 1:4,年轻代占整个堆栈的 1/5
9、 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄,默认为:15。如果设置为 0 的话, 则年轻代对象不经
过 Survivor 区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较
大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年
轻代即被回收的概论。
10、 -XX:+DisableExplicitGC 这个将会忽略手动调用 GC 的代码使得 System.gc()的调用就会变成一个空调
用,完全不会触发任何 GC
11、 补充:---- gc 的日志的设置
修改 bin/catalina.bat 文件设置参数(第一行)
set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m
-XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m
-XX:MaxTenuringThreshold=10
-XX:NewRatio=2 -XX:+DisableExplicitGC
修改 bin/catalina.sh 文件参数(第一行)
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m
-XX:MaxNewSize=1024m
-XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2
-XX:+DisableExplicitGC"
cs