Tomcat6.18版本:apache-tomcat-6.0.18
Why
每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换。
而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受Socket,而由线程池来处理堵塞在pipe或者队列里的请求.这样的话,只要OS可以接受TCP的连接,web服务器就可以处理该请求。大大提高了web服务器的可伸缩性。
1.让Tomcat6中支持Java语言的特性NIO( New I/O)
大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( New I/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。 请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。
不信,你可以试试,从Apache Tomcat 站点下载 的Tomct6 压缩包中 conf/server.xml的 配置文件第69行,内容如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
进行测试,可以在控制台的启动信息里看见,默认状态下没有被打开nio配置,启动时的信息,如下:
2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2010-2-1 12:59:40 org.apache.catalina.startup.Catalina load
修改成支持NIO的类型,配置如下:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
进行测试,被打开nio配置,启动时的信息,如下:
2010-2-1 13:01:01 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
2010-2-1 13:01:01 org.apache.coyote.http11.Http11NioProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
这样才能让你真正体验到Tomcat6下NIO给你的系统带来的快感。
–end–
2,修改Tomcat 6默认的maxThread
官方文档默认说支持200但似乎超过40就不行了
server.xml配置:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" executor="tomcatThreadPool" compression="on" compressionMinSize="2048" maxThreads="30000" minSpareThreads="512" maxSpareThreads="2048" enableLookups="false" redirectPort="8443" acceptCount="35000" debug="0" connectionTimeout="40000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
连接器使用的线程池的名子:executor="tomcatThreadPool"
连接器端口 :port="8090"
连接器使用的传输方式 :protocol="org.apache.coyote.http11.Http11NioProtocol"
传输时是否支持压缩 :compression="on"
压缩的大小 :compressionMinSize="2048"
线程池名: name="tomcatThreadPool"
线程前缀: namePrefix="catalina-exec-"
最大产生线程数:maxThreads="1000"
最小初始现程数:minSpareThreads="350"
在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
其中和最大连接数相关的参数为maxProcessors和acceptCount。
如果要加大并发连接数,应同时加大这两个参数。
3.设置Tomcat连接器池
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />
在配置文件中添加了如下配置:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />
4.修tomcat的JVM参数
大量的并发也意味着大量的服务器资源,所以修改一下tomcat的JVM参数也是必要的错误。
提示:java.lang.OutOfMemoryError: Java heap space
引用:
Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”
文件,在文件开头增加如下设置:
set JAVA_OPTS=-Xms256m -Xmx512m
Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:
JAVA_OPTS=’-Xms256m -Xmx512m’
相关推荐
《深入探讨:Tomcat性能优化》 在Java Web开发领域,Tomcat作为一款广泛应用的开源Servlet容器,其性能优化对于提升整个Web应用的响应速度和处理能力至关重要。本篇文章将全面解析Tomcat性能优化的各个方面,帮助...
配置优化是Tomcat性能优化的第一步,也是最基础的一步。首先,应该选择合适的Tomcat版本进行部署。当前版本的Tomcat,如Tomcat 9,性能更高且更稳定。部署时,应禁用ajp协议,因为在8.5.51之前的版本默认开启,但...
Tomcat性能优化 Tomcat 是一个流行的 Java Web 服务器,它的性能优化对网站的并发能力有着至关重要的影响。在本文中,我们将讨论 Tomcat 的性能优化方法,以提高网站的并发能力。 一、目的 通过优化 Tomcat,提高...
Tomcat性能优化与调优 Tomcat性能优化是指通过调整Tomcat服务器的配置和虚拟机参数,以提高Tomcat服务器的性能和可扩展性。Tomcat服务器的性能优化可以分为两类:外部环境调优和自身调优。 外部环境调优是指调整...
【Tomcat性能优化笔记】 Tomcat作为一款广泛应用的开源Java Servlet容器,其性能优化对于提升Web应用的整体效能至关重要。优化工作主要分为两大部分:外部环境调整和Tomcat自身的配置优化。 1. **外部环境优化** ...
Tomcat性能优化及JVM内存工作原理 Tomcat性能优化是指通过调整Tomcat服务器的配置和JVM的参数,以提高Tomcat服务器的性能和响应速度。Tomcat性能优化主要包括代码层优化、JVM内存优化和应用配置优化三方面。 代码...
【Tomcat性能优化】 在大型应用项目中,Tomcat的默认内存配置往往不足以应对复杂的运行需求,这可能导致系统出现各种问题。最常见的问题之一是“java.lang.OutOfMemoryError: Java heap space”错误,这是由于Java...
总的来说,Tomcat性能优化涵盖了从底层架构选择(如NIO)、服务器配置调整(如`server.xml`和`web.xml`)、到框架级别的定制化(如SpringBoot的`TomcatContextCustomizer`和`TomcatConnectorCustomizer`)。...
### Tomcat7性能优化策略详解 #### 一、引言 在现代Web应用开发中,Tomcat作为一款广泛使用的开源...希望这些方法能够帮助开发者们更好地理解和掌握Tomcat性能优化的关键技术,从而为用户提供更加稳定高效的Web服务。
《Tomcat性能优化指南》 在Java Web应用领域,Tomcat作为一款轻量级的应用服务器,因其开源、免费、小巧且高效的特点,被广泛应用。然而,随着应用规模的扩大和用户数量的增长,如何进行Tomcat的性能优化,提高其...
Tomcat性能优化配置
Tomcat性能优化是一个关键的议题,尤其是在高并发和大数据量的场景下,优化能够显著提升应用的响应速度和系统整体的稳定性。本文将深入探讨如何通过调整Tomcat的Java虚拟机参数以及服务器参数来实现性能优化。 首先...
### Tomcat性能优化篇知识点详解 #### 一、Tomcat启动流程分析 1. **ContainerBase.startInternal()方法** - `ContainerBase`是Tomcat中容器类的基础类,负责处理容器的生命周期管理,如启动、停止等操作。 - 在...
### Tomcat性能优化方案 在IT领域中,Tomcat作为一款广泛使用的开源Servlet容器,其性能直接影响着基于Java的应用程序的运行效率与用户体验。本文将详细介绍如何通过一系列配置与优化措施来提升Tomcat服务器的整体...