Tomcat优化
2015-10-10 16:21
369 查看
由于Tomcat的运行依赖于JVM,从虚拟机的角度我们把Tomcat的调整分为外部环境调优和自身调优两类来描述。
1.外部环境调优
Tomcat需要依赖Java虚拟机运行。根据客户选用的主机的操作系统选择对应的 JDK的版本。无论哪个厂商的JDK,都建议使用最新的版本。
虚拟机可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。
参数
描述
-Xms<size>
JVM初始化堆的大小
-Xmx<size>
JVM堆的最大值
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
JAVA_OPTS=‘-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】’'
windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入
(export JAVA_HOME='/home/ftpuser/xjSheetHome/java/jdk1.5.0_22/')
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
最大堆内存是1024m,对于现在的硬件还是偏低,实施时,还是按照机器具体硬件配置优化。
2.自身调优
2.1tomcat 线程优化
这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。
2.2设置session时间
conf\web.xml中通过参数指定:
<session-config>
<session-timeout>180</session-timeout>
</session-config>
单位为分钟。
2.3配置tomcat禁止目录下的文件
在{tomcat_home}/conf/web.xml中,把listings参数设置成false即可,如下:
3.服务器资源
对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。
4.采用集群
单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。
1.外部环境调优
Tomcat需要依赖Java虚拟机运行。根据客户选用的主机的操作系统选择对应的 JDK的版本。无论哪个厂商的JDK,都建议使用最新的版本。
虚拟机可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。
参数
描述
-Xms<size>
JVM初始化堆的大小
-Xmx<size>
JVM堆的最大值
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
JAVA_OPTS=‘-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】’'
windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入
(export JAVA_HOME='/home/ftpuser/xjSheetHome/java/jdk1.5.0_22/')
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
最大堆内存是1024m,对于现在的硬件还是偏低,实施时,还是按照机器具体硬件配置优化。
2.自身调优
2.1tomcat 线程优化
这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" maxThreads="500" minSpareThreads="20" acceptCount="100" disableUploadTimeout="true" enableLookups="false" URIEncoding="UTF-8" />
2.2设置session时间
conf\web.xml中通过参数指定:
<session-config>
<session-timeout>180</session-timeout>
</session-config>
单位为分钟。
2.3配置tomcat禁止目录下的文件
在{tomcat_home}/conf/web.xml中,把listings参数设置成false即可,如下:
3.服务器资源
对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。
4.采用集群
单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。
相关文章推荐
- tomcat 重启,tomcat查看日志
- windows下tomcat+solr+ZooKeeper集群搭建
- (转)TOMCAT JAVA_HOME or JRE_HOME environment variable is not defined correctly(2013-03-29 13:04:14)
- Win7 + Ubuntu 14.04 +tomcat + mysql 搭建测试环境手册
- 如何在一台电脑上同时启动多个tomcat
- 将tomcat作成系统自启动服务并增大jvm启动内存
- Apache与Tomcat 区别联系
- tomcat集群负载均衡配置
- Eclipse部署Maven web项目到tomcat服务器时,没有将lib下的jar复制过去的解决办法
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
- Tomcat源码分析——server.xml文件的加载
- Tomcat源码分析——SERVER.XML文件的加载与解析
- Tomcat目录下文件详解
- MyEclipse启动Tomcat出现Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
- Eclipse 导入外部项目无法识别为web项目并且无法在部署到tomcat下
- Linux下创建用户,分组,配置jdk, tomcat
- jdk+Tomcat部署安装
- tomcat通过conf-Catalina-localhost目录发布项目详解
- Tomcat工作原理详解
- tomcat7安装版项目无法部署的问题