Tomcat6配置打开线程池

线程池配置(Tomcat6下)
 
使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力。使用方式:
 
首先。打开/conf/server.xml,增加
 
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
        maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
 
最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。
 
然后,修改<Connector ...>节点,增加executor属性,如: 
 
<Connectorexecutor="tomcatThreadPool"
               port="80" 
protocol="HTTP/1.1" 
maxThreads="600"  
minSpareThreads="100" 
maxSpareThreads="300"
               connectionTimeout="60000"
               keepAliveTimeout="15000"
               maxKeepAliveRequests="1"
               redirectPort="443"
               ....../>
 
maxThreads:Tomcat可创建的最大的线程数,每一个线程处理一个请求;
 
minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数;
 
maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程;
 
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,
就是被排队的请求数,超过这个数的请求将拒绝连接。
 
connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
enableLookups:是否允许DNS查询
 
 
 
注意:可以多个connector公用1个线程池。
 
 
 
3、调整连接相关Connector的参数:
 
<Connector executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1" 
               connectionTimeout="60000"
               keepAliveTimeout="15000"
               maxKeepAliveRequests="1"
               redirectPort="443"
               maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
 
 
 
参数说明:
 
connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 
keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。
maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间) 
the maximum number of HTTP requests that can be held in the pipeline until the connection is closed by the server. 
Setting this attribute to 1 disables HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. 
setting this to -1 allows an unlimited number of pipelined or keep-alive HTTP requests. If not specified, 
this attribute is set to 100. maxHttpHeaderSize - 
http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。 URIEncoding - 指定Tomcat容器的URL编码格式。 
acceptCount - 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,
默认为10个。
defines the maximum queue length for incoming connection requests when all possible request processing threads are in use. 
Any requests received when the queue is full are refused. The default value is 10. disableUploadTimeout - 
上传时是否使用超时机制 enableLookups - 是否反查域名,取值为:true或false。为了提高处理能力,
应设置为false bufferSize - defines the size (in bytes) of the buffer to be provided for input streams created by this connector. 
By default, buffers of 2048 bytes are provided. maxSpareThreads - 
做多空闲连接数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程 
the maximum number of unused request processing threads that are allowed to exist until the thread pool starts stopping 
the unnecessary threads. The default value is 50. maxThreads - 
最多同时处理的连接数,Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。。 
the maximum number of request processing threads to be created by this Connector, which therefore determines 
the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. 
minSpareThreads - 最小空闲线程数,Tomcat初始化时创建的线程数 the number of request processing threads that are created 
when this Connector is first started. The connector will also make sure it has the specified number of idle processing threads 
available. This attribute should be set to a value smaller than that set for maxThreads. The default value is 4. minProcessors - 
最小空闲连接线程数,用于提高系统处理性能,默认值为10。(用于Tomcat4中) 
maxProcessors - 最大连接线程数,即:并发处理的最大请求数,默认值为75。(用于Tomcat4中)

时间: 2024-11-18 06:49:18

Tomcat6配置打开线程池的相关文章

Tomcat线程池配置

1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: <Executor name="tomcatThreadPool" namePrefix="tomcatThreadPool-" maxThreads="1000" maxIdleTime="300000" minSpareThreads="200"/> 重要参数说明: name:共

TestNg线程池配置、执行次数配置、超时配置

使用注解的方式对TestNg线程池配置.执行次数配置.超时配置 注:使用注解来控制测试方法运行的次数和超时时间,timeOut在单线程或者多线程模式下都可用,threadPoolSize设置了线程池的个数 * ,在观察结果时,发现很多值是重复的,但是可能不等于我们配置的线程池个数,因为线程的个数还取决于硬件CPU的支持, invocationCount----表示执行的次数 threadPoolSize-----表示线程池的内线程的个数 timeOut-------超时时间-毫秒 Javacod

Java 理论和实践:线程池和工作队列

使用线程池以获取最佳资源利用率 Java 多线程编程论坛中最常见的一个问题就是各种版本的 "我怎么样才可以创建一个线程池?" 几乎在每个服务器应用里,都会出现关于线程池和工作队列的问题.本文中,Brian Goetz 就线程池原理.基本实现和调优技术.需要避开的一些常见误区等方面进行共享. 为何要用线程池? 有很多服务器应用,比如 Web 服务器,数据库服务器,文件服务器,或者邮件服务器,都会面对处理大量来自一些远程请求的小任务.请求可能会以很多种方式到达服务器,比如通过一种网络协议(

线程池原理

在面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收.所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是对一些很耗资源的对象创建和销毁.如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因.比如大家所熟悉的数据库连接池就是遵循这一思想而产生的,下面将介绍的线程池技术同样符合这一思想. 多线程技术主要解决处

springboot线程池的使用和扩展

我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务: 本文地址:http://blog.csdn.net/boling_cavalry/article/details/79120268 实战环境 windowns10: jdk1.8: springboot 1.5.9.RELEASE: 开发工具:IntelliJ IDEA: 实战源码 本次实战的源码可以

Springboot线程池服务实战分享

我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务:实战环境windowns10:jdk1.8:springboot 1.5.9.RELEASE:开发工具:IntelliJ IDEA: 这里面有多个工程,本次用到的工程为threadpooldemoserver,如下图红框所示:实战步骤梳理本次实战的步骤如下:创建springboot工程:创建Servic

chapter19【等待与唤醒案例、线程池、Lambda表达式】

等待唤醒机制 1.1 线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同. 比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题. 为什么要处理线程间通信: 多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据.

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1 2 3 4 5 6 7 new Thread(new

Java四种线程池

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor 时间:2015-10-20 22:37:40      阅读:8762      评论:0      收藏:0      [点我收藏+] 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异