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性能优化
Tomcat性能优化.rar Tomcat性能优化.rar
tomcat性能优化 调优 tomcat 性能优化 优化详解 优化步骤 优化过程
通过优化tomcat提高网站的并发能力。 2.服务器资源 服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。 3.优化配置
Tomcat性能优化 1. 操作系统2. JAVA 虚拟机3. Tomcat 自身的调整策略
Tomcat性能优化可从外部环境和自身调整两方面着手。 外部环境主要是Tomcat所在服务器的运行环境,包括操作系统层面、部署以及Java虚拟机的配置
Tomcat性能优化设置tomcat的java虚拟机参数catalina.sh/batWindows下修改 $tomcat$\ bin \ catalina.
tomcat性能优化.doc
Tomcat性能优化及JVM内存工作原理,适用于运维人员,开发人员
tomcat性能优化方案 按照此方法进行配置tomcat可以提高你服务器的性能。希望可以帮助到你。
tomcat性能优化,详细讲解,都有例子,非常实用。
Tomcat性能优化篇笔记.pdf
Tomcat 性能调整,tomcat参数调整,压力测试介绍
1.操作系统调优; 2.Java虚拟机调优; 3.Apache集成Tomcat; 4.【适用场景】 大量使用静态页面的应用系统; 5.【适用场景】 并发用户量及在线使用用户数量比较高的系统
在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError: Java heap space”,从而导致客户端显示500错误。
通过优化tomcat提高网站的并发能力。服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
主要介绍了tomcat性能优化方式简单整理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下