tomcat优化

在这里插入图片描述
1.Java虚拟机调优

应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。 JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。

2.内存设置 VM参数调优

-Xms 表示JVM初始化堆的大小,-Xmx表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。表示初始化内存为256MB,可以使用的最大内存为512MB。

Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:
Java代码 收藏代码
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

一定加在catalina.bat最前面。
Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:
Java代码 收藏代码
JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

注意:前后二者区别,有无set,有无双引号。

3.HTTP优化配置 server.xml
Java代码 收藏代码
<Connector
port=“8080”

enableLookups="false"  
disableUploadTimeout="true"   
useBodyEncodingForURI="true"   

URIEncoding="UTF-8"  

maxHttpHeaderSize="8192"   
maxThreads="600"   
minSpareThreads="100"   
maxSpareThreads="500"   
acceptCount="700"   
connectionTimeout="20000"   

keepAliveTimeout="15000"  
maxKeepAliveRequests="1"  

compression="on"   
compressionMinSize="2048"   
noCompressionUserAgents="gozilla, traviata"   
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"   
  
redirectPort="8443"   

/>

引用
maxThreads:Tomcat可创建的最大的线程数。
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
minSpareThreads:Tomcat初始化时创建的线程数。
maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。
maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
maxHttpHeaderSize - http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。
disableUploadTimeout - 上传时是否使用超时机制
enableLookups - 是否反查域名,取值为:true或false。为了提高处理能力,应设置为false

3.1禁用DNS查询

当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值为false:

acceptCount>maxThreads>maxSpareThreads>minSpareThreads

这张图说的和上面不一样,maxThreads>acceptCount>maxSpareThreads>minSpareThreads

倾向于后者是对的。

3.2 调整线程数

Tomcat使用线程来处理接收的每个请求,使用线程池加速响应速度来处理请求。

3.3 APR库使用

Tomcat中使用APR库,其实就是在Tomcat中使用JNI的方式来读取文件以及进行网络传输。可以大大提升Tomcat对静态文件的处理性能,同时如果你使用了HTTPS方式传输的话,也可以提升SSL的处理性能。 一般在Windows下,可以直接下载编译好的二进制版本的dll库文件来使Tomcat启用APR,一般建议拷贝库文件tcnative-1.dll到Tomcat的bin目录下。而在Linux下,可以直接解压和安装bin目录下的tomcat_native.tar.gz文件,编译之前要确保apr库已经安装。 怎么才能判断Tomcat是否已经启用了APR库呢?方法是通过看Tomcat的启动日志:

如果没有启用APR,则启动日志一般有这么一条:
引用
org.apache.coyote.http11.Http11Protocol start

如果启用了APR,则这条日志就会变成:
Java代码 收藏代码
org.apache.coyote.http11.Http11AprProtocol start

tcnative-1.dll 下载地址:http://tomcat.heanet.ie/native/

3.4 配制gzip压缩

gzip 压缩就是为了提高访问网站的速度,即站点上要传给浏览器的网页内容先进行压缩,然后通过网络传给客户端的浏览器,客户端的浏览器再进行解压,并显示给用户。
引用
compression=“on” 打开压缩功能
compressionMinSize=“2048” 启用压缩的输出内容大小,这里面默认为2KB
noCompressionUserAgents=“gozilla, traviata” 压对于以下的浏览器,不启用缩
compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain”  要压缩的文件类型

通过firebug 可以看到响应头的信息:

加入前:
引用
Server Apache-Coyote/1.1
Content-Type text ml;charset=UTF-8
Content-Length 2063
Date Thu, 05 May 2011 01:35:55 GMT

加入后:
引用
Server Apache-Coyote/1.1
Content-Type text ml;charset=UTF-8
Transfer-Encoding chunked
Content-Encoding gzip
Vary Accept-Encoding
Date Thu, 05 May 2011 01:38:13 GMT

还可以通过在线网站去测试:
引用
http://gzip.iamzz.com/
http://tool.chinaz.com/Gzips/

与内存相关的tomcat错误处理:

内存的永久保存区域不足引起

1.java.lang.OutOfMemoryError:这个错误是因为tomcat JVM的Permanent Generation space(内存的永久保存区域)不足引起的,这个区域是JVM用于用于存放Class和Meta的信息的内存区域,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了,症状是tomcat运行一段时间后失去反应,服务中tomcat服务正常,重启 tomcat服务后网站又正常响应了。解决方案是人工调整确认大小设置,使用regedit修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java中的 Options参数,在后面增加一下数据:
引用
-XX:PermSize=64M
-XX:MaxPermSize=128m

JVM堆空间不足

2.java.lang.OutOfMemoryError: Java heap space Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。使用前面所说的方法进行调整即可

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值