Tomcat 配置详解和调优( 三 )

  • unpackWAR:默认为true
  • workDir:为WEB应用程序内部的Servlet指定临时读写的目录路径名 。如没有设置 , 则Tomcat会在%CATALINA_HOME%/work目录下提供一个合适的目录
  • 例:<Content path=”/abc” docBase=”d:/xyz” reloadable=”true” />
     
    Tomcat性能优化方案整理 
    考虑一下这种场景 , 你开发了一个应用 , 它有十分优秀的布局设计 , 最新的特性以及其它的优秀特点 。但是在性能这方面欠缺 , 不管这个应用如何都会遭到客户拒绝 。客户总是期望它们的应用应该有更好的性能 。如果你在产品中使用了Tomcat服务器 , 那么这篇文章就会给你几方面来提升Tomcat服务器的性能 。感谢ITWorld article给本文提供资源 。经过沉思我已经知道了和早期版本相比最新的Tomcat提供更好的性能和稳定性 。所以一直使用最新的Tomcat版本 。现在本文使用下面几步来提高Tomcat服务器的性能 。
    1. 增加JVM堆内存大小
    2. 修复JRE内存泄漏
    3. 线程池设置
    4. 压缩
    5. 数据库性能调优
    6. Tomcat本地库
    7. 其它选项
     
    第一步 – 提高JVM栈内存Increase JVM heap memory
    你使用过tomcat的话 , 简单的说就是“内存溢出”. 通常情况下 , 这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过配置Tomcat的配置文件(windows 下的catalina.bat或linux下的catalina.sh)可以解决这种问题.这种解决方法是通过增加JVM的栈内存实现的.也就是说 , JVM通常不去调用垃圾回收器 , 所以服务器可以更多关注处理web请求 , 并要求尽快完成 。要更改文件(catalina.sh) 位于"tomcat server folderbincatalina.sh" , 下面 , 给出这个文件的配置信息 , 
    JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m -Xmx1024m-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m-XX:MaxPermSize=512m -XX:+DisableExplicitGC"-Xms – 指定初始化时化的栈内存
    -Xms – 指定初始化时化的栈内存-Xmx – 指定最大栈内存在重启你的Tomcat服务器之后 , 这些配置的更改才会有效 。下面将介绍如何处理JRE内存泄漏.
     
    第二步 – 解决JRE内存泄露
    性能表现不佳的另一个主要原因是内存泄漏 , 正如我之前说过:始终使用最新的tomcat服务器以获得更好的性能和可伸缩性 。现在 , 这句话变成真的 。如果我们使用最新的tomcat版本6.0.26及以上就可以解决这个错误 , 因为它包含了一个监听器来处理JRE和PermGen的内存泄漏 。使用的监听器是 , 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />你可以在server.xml文件中找到这个监听器的配置 , server.xml位置在“tomcat project folder/conf/server.xml” 。接下来 , 我们将看看如何调整连接属性“maxThreads” 。
     
    第三步 – 线程池设置
    线程池指定Web请求负载的数量 , 因此 , 为获得更好的性能这部分应小心处理 。可以通过调整连接器属性“maxThreads”完成设置 。maxThreads的值应该根据流量的大小 , 如果值过低 , 将有没有足够的线程来处理所有的请求 , 请求将进入等待状态 , 只有当一个的处理线程释放后才被处理;如果设置的太大 , Tomcat的启动将花费更多时间 。因此它取决于我们给maxThreads设置一个正确的值 。
    <Connector port="8080" address="localhost"maxThreads="250" maxHttpHeaderSize="8192"emptySessionPath="true" protocol="HTTP/1.1"enableLookups="false" redirectPort="8181" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />在上述配置中 , maxThreads值设定为“250” , 这指定可以由服务器处理的并发请求的最大数量 。如果没有指定 , 这个属性的默认值为“200” 。任何多出的并发请求将收到“拒绝连接”的错误提示 , 直到另一个处理请求进程被释放 。错误看起来如下 , 
    org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) arecurrently busy, waiting. Increase maxThreads (250) or check the servlet status


    推荐阅读