Tomcat 配置详解和调优( 四 )

如果应用提示上述错误 , 务必检查上述错误是否是由于单个请求花费太长时间造成的 , 这个问题的原因是这样的 , 有时候如果数据库连接不释放的话 , 进程将不会处理其它请求 。
注意: 如果请求的数量超过了“750” , 这将不是意味着将maxThreads属性值设置为“750” , 它意外着最好使用“Tomcat集群”的多个实例 。也就是说 , 如果有“1000”请求 , 两个Tomcat实例设置“maxThreads= 500” , 而不在单Tomcat实例的情况下设置maxThreads=1000 。根据我的经验 , 准确值的设定可以通过将应用在在各种环境中测试得出 。接下来 , 我们来看看如何压缩的MIME类型 。
第4步- 压缩
Tomcat有一个通过在server.xml配置文件中设置压缩的选项 。压缩可以在connector像如下设置中完成 , 
??????<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8181" compression="500" compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />在前面的配置中 , 当文件的大小大于等于500bytes时才会压缩 。如果当文件达到了大小但是却没有被压缩 , 那么设置属性compression="on" 。否则Tomcat默认设置是“off” 。接下来我们将看看如何调优数据库 。
第五步- 数据库性能调优
Tomcat性能在等待数据库查询被执行期间会降低 。如今大多数应用程序都是使用可能包含“命名查询”的关系型数据库 。如果是那样的话 , Tomcat会在启动时默认加载命名查询 , 这个可能会提升性能 。另一件重要事是确保所有数据库连接正确地关闭 。给数据库连接池设置正确值也是十分重要的 。我所说的值是指Resource要素的最大空闲数(maxIdle) , 最大连接数(maxActive),最大建立连接等待时间(maxWait)属性的值 。因为配置依赖与应用要求 , 我也不能在本文指定正确的值 。你可以通过调用数据库性能测试来找到正确的值 。
第6步 – Tomcat原生库
Tomcat的原生库基于Apache可移植运行时(Apache Portable Runtime简称APR) , 给程序员提供了超强的扩展性和性能 , 在产品运作中帮助融合原生的服务器技术以展现最佳的性能 。想知道安装说明的朋友请参考Tomcat Native Library – (APR) Installation 。
第7步 – 其他选项
这些选项是:

  • 开启浏览器的缓存 , 这样读取存放在webapps文件夹里的静态内容会更快 , 大大推动整体性能 。
  • 每当开机时 , Tomcat服务器应当自动地重启 。
  • 一般情况下HTTPS请求会比HTTP请求慢 。如果你想要更好的安全性 , 即使慢一点我们还是要选择HTTPS 。
~~~~~~~~~~~~~~~~Tidied up by Travis.Tang on 2013.11.07~~~~~~~~~~~~~~
设置TOMCAT启用GZIP压缩 
原理简介
HTTP 压缩可以大大提高浏览网站的速度 , 它的原理是 , 在客户端请求服务器对应资源后 , 从服务器端将资源文件压缩 , 再输出到客户端 , 由客户端的浏览器负责解压缩并浏览 。相对于普通的浏览过程HTML ,css,JavaScript , Text  , 它可以节省40%左右的流量 。更为重要的是 , 它可以对动态生成的 , 包括CGI、php , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩 , 压缩效率也很高 。
 
配置方法
Tomcat5.0以后的版本是支持对输出内容进行压缩的 , 使用的是gzip压缩格式。
 
修改%TOMCAT_HOME%/conf/server.xml , 修订节点如下:
 <Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"compression="on"compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />从上面节点的属性可以看出 , 要使用gzip压缩功能 , 你需要在Connector节点中加上如下属性