Tomcat调优之tomcat容器优化
通过应用程序的连接器( Connector )进行性能控制的的参数是创建的处理请求的线程数。 Tomcat 使用线程池加速响应速度来处理请求。在 Java 中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出 CPU 最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求, 以下以 tomcat5 为例:
maxThreads Tomcat 使用线程来处理接收的每个请求。这个值表示 Tomcat 可创建的最大的线程数。
acceptCount :指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
connnectionTimeout :网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
minSpareThreads Tomcat 初始化时创建的线程数。
maxSpareThreads 一旦创建的线程超过这个值, Tomcat 就会关闭不再需要的 socket 线程。
最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况。在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的 web 站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。
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.Http11Protocolstart
如果启用了 APR ,则这条日志就会变成:
org.apache.coyote.http11.Http11AprProtocolstart
tcnative-1.dll
下载地址: http://tomcat.heanet.ie/native/
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML,CSS,Javascript ,Text ,它可以节省 40% 左右的流量。更为重要的是,它可以对动态生成的,包括 CGI PHP,JSP,ASP, Servlet,SHTML 等输出的网页也能进行压缩,压缩效率惊人。

1)compression="on"打开压缩功能

2)compressionMinSize="2048"启用压缩的输出内容大小,这里面默认为2KB

3)noCompressionUserAgents="gozilla,traviata"对于以下的浏览器,不启用压缩

4)compressableMimeType="text/html,text/xml"压缩类型