转载自:http://liaojuncai.iteye.com/blog/2001621
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
server.xml配置:
- <Connector port="8080"
- protocol="org.apache.coyote.http11.Http11NioProtocol"
- executor="tomcatThreadPool"
- compression="on"
- compressionMinSize="2048"
- maxThreads="3000"
- 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’
相关推荐
6. **性能优化**:通过调整Apache Commons Pool的配置,如最大空闲时间、最大活动对象数等,可以进一步优化连接池的性能。同时,根据实际需求,可以调整Redis的过期策略、复制模式和数据持久化方式,确保session管理...
这个版本引入了诸多新特性,包括对Java EE 8的支持,性能优化,以及更好的安全性。"apache-tomcat-9.0.36-windows-x64.zip"这个文件是Windows 64位系统的Tomcat 9.0.36安装包,包含了运行和部署Java Web应用所需的...
【标题】:“Tomcat性能优化”意味着我们正在探讨如何提升Apache Tomcat服务器的运行效率,使其在处理Web应用时能够更快、更稳定地工作。Tomcat是一个开源的Java Servlet容器,广泛用于部署Java Web应用程序。 ...
2. **性能优化**:可以调整Redis的配置,如缓存策略、过期策略等,以适应高并发场景。 3. **监控与报警**:监控Redis和Tomcat的Session操作,设置报警阈值,以便在出现问题时能及时发现。 通过以上介绍,我们了解...
在这个版本的连接器中,可能会包含一些针对性能优化的改进,新的安全补丁,或者其他功能更新,以增强与Apache HTTPD的协同工作能力。 压缩包内的文件"tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x"可能是...
总的来说,Tomcat性能优化是一个涉及多个层面的过程,需要结合实际情况,从操作系统、JVM到Tomcat自身配置全面考虑,才能实现最佳的运行效果。同时,持续监控和调整是保持高性能的关键,因为随着应用的发展,优化的...
5. **测试和优化**:测试session存储和恢复是否正常,根据实际负载调整连接池大小、超时时间等参数。 通过以上介绍,我们可以看到这个压缩包文件提供了一整套解决方案,帮助用户在Tomcat 6和7环境下无缝地将session...
7. **性能优化** 为了提升性能,可以考虑调整Tomcat的线程池大小、JVM内存设置、开启GZIP压缩等。此外,还可以通过调整JVM的垃圾回收策略和使用数据缓存来提高响应速度。 综上所述,Apache Tomcat 8.5.47在Windows...
`tomcat-connectors-1.2.48-src`提供了多种性能优化选项,如连接池管理、负载均衡、缓存机制等,以提升整体系统的响应速度和可靠性。 6. **安全性与故障排查** 连接器的源代码提供了深入的洞察力,有助于开发者...
8. **性能优化**: 对于64位系统,可以调整Tomcat的JVM参数以优化内存分配,例如设置-Xms和-Xmx来控制堆内存大小。此外,还可以通过调整线程池大小、开启NIO或多线程模式来提升性能。 9. **日志与调试**: Tomcat的...
4. **性能优化**: 使用了高效的序列化和反序列化策略,比如Java的`java.io.Serializable`接口,或者更高级的Google Protobuf,以减少数据转换的开销。 5. **故障恢复**: 当Redis服务出现故障时,`tomcat-redis-...
- 可以通过修改`conf/server.xml`配置文件来调整端口号、连接器类型、最大并发连接数等参数。 5. **安全与优化**: - 默认情况下,Tomcat的许多端口都是开放的,需要根据实际需求关闭不必要的端口。 - 为提高...
配置优化是Tomcat性能优化的第一步,也是最基础的一步。首先,应该选择合适的Tomcat版本进行部署。当前版本的Tomcat,如Tomcat 9,性能更高且更稳定。部署时,应禁用ajp协议,因为在8.5.51之前的版本默认开启,但...
总结,Tomcat性能优化涉及JVM、Tomcat配置、Web应用、代码质量以及监控等多个层面,需要结合实际业务场景进行综合考虑。只有全面了解并掌握这些优化策略,才能使Tomcat在运行大型复杂应用时保持高效、稳定。
2. 性能调整:可以通过调整AJP连接器的参数,如maxThreads、minSpareThreads等,优化性能。 3. 日志监控:启用Apache和Tomcat的日志功能,以便于定位和解决问题。 4. 错误排查:如果遇到错误,查看Apache的error_log...
1. 参数设置:优化JVM内存分配是提升Tomcat性能的关键。通常需要调整的参数包括`-Xms`(初始堆大小)、`-Xmx`(最大堆大小)、`-XX:NewRatio`(新生代与老年代的比例)、`-XX:SurvivorRatio`(年轻代中Eden区与...
8. **性能优化**:Tomcat可以通过调整线程池大小、内存分配、连接器设置等方式进行性能优化。例如,增加`maxThreads`参数可以处理更多并发请求。 9. **监控与管理**:通过内置的JMX(Java Management Extensions)...
此版本引入了许多性能优化和新特性,包括对HTTP/2的支持,更好的HTTPS处理,以及更强大的管理工具。 3. **64位版本**: 64位的Tomcat针对大内存系统进行了优化,可以更好地处理大型应用或高并发场景。相比32位,64位...
很好的TOMCAT-5.5.X优化配置文档,详细说明了各个的参数设置
**性能优化** 为了提高性能,你可以调整`conf/server.xml`中的配置参数,比如线程池大小、最大请求队列长度等。同时,也可以通过JVM的调优参数来优化内存分配和垃圾回收。 **总结** `apache-tomcat-7.0.63-windows-...