对于JavaWeb开发者来说,Tomcat已经成为了默认的web服务器,但是在使用Tomcat部署应用的生产环境中,如果我们使用Tomcat的默认配置,尤其是内存和线程的配置,它的配置很低,很容易成为性能瓶颈,所以我们需要优化Tomcat服务器来提高它的运行性能。我们来看看如何优化Tomcat?1.Tomcat内存优化,启动时告诉JVM需要多少内存(调整Optimalmemory是最直接的方式)Windows下的catalina.bat,Linux下的catalina.sh,在这个文件里配置jvm的内存空间,比如:JAVA_OPTS='-Xms256m-Xmx512m'-XmsJVMinitializationheapsize-XmxJVMheap最大值,实际参数大小取决于服务器配置或项目具体设置;2、在server.xml中配置tomcat线程优化,如:maxSpareThreads="X"表示如果最多有X个线程,一旦超过X,就关闭不再需要的线程acceptCount="X"当同时连接的人数达到maxThreads,还可以排队,队列大小为X,超过X则不处理。3、TomcatIO优化1:SynchronousblockingIO(JAVABIO)是同步阻塞的,服务器实现方式是一个线程一个连接(一个连接一个线程想想就可怕,线程是非常宝贵的资源),的当然可以通过线程池机制来改进。2:JAVANIO分为同步非阻塞IO,异步阻塞IO和BIO的区别***一请求一线程。可以重复使用同一个线程来处理多个连接(多路复用)。3:异步非阻塞IO(JavaNIO2也叫AIO)和NIO之间的主要区别是操作系统的底层差异。可以类比为快递。NIO的意思是网购后,要先去官网查看快递是否到了(可能多次),然后自己去提货。;AIO表示快递员送货上门(不用关注快递进度)。BIO方式适用于连接数比较少且固定的架构。这种方式对服务器资源要求比较高,并发限制在应用中。JDK1.4之前的唯一选择,但程序直观、简单易懂。NIO方式适用于连接数较多,连接比较短(轻操作)的架构,比如聊天服务器。对于连接数较多,连接比较长(操作量大)的架构,比如相册服务器,完全调用OS参与并发操作,编程比较复杂,JDK7开始支持。在server.xml中/>实现到Tomcat的IO切换。四、大杀器APRAPR是从操作系统层面解决异步IO问题,大幅提升性能。(http://apr.apache.org/)。APR(ApachePortableRuntime)是一个高度可移植的库。它是ApacheHTTPServer2.x的核心。它可以更好地与其他本地Web技术集成,并且通常使Java作为高性能Web服务器平台更加高效。它不是简单地用作背景容器;在生产环境中,尤其是直接使用Tomcat作为WEB服务器时,应该使用TomcatNative来提高其性能。如果不装APR,基本上300个线程很快就用完了,以后的请求只能等了。但是加入APR后,并发线程数明显下降,从原来的300个马上就只有几十个,而且新的请求进来也不会阻塞;在局域网环境下,即使是400个并发线程,瞬间完成处理/传输,但在真实的互联网环境下,页面处理时间只占不到0.1%,大部分时间都用在了用于页面传输。如果不使用APR,一个线程只能同时处理一个用户,势必造成拥堵,所以在生产环境中使用apr是非常有必要的。安装ApacheTomcatNativeLibrary,直接启动支持apr(http://tomcat.apache.org/native-doc/),apr本身就是基于APR的,消除代码问题Tomcat优化到这个级别,可以满足大部分性能要求;***,优化的前提是良好的代码质量和设计。