首页
学习
活动
专区
圈层
工具
发布

Tomcat线程池配置

1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: <Executor name="tomcatThreadPool" namePrefix...maxThreads="1000" maxIdleTime="300000" minSpareThreads="200"/> 重要参数说明: name:共享线程池的名字...这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None; namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。...这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-; maxThreads:该线程池可以容纳的最大线程数。...minProcessors="5" maxProcessors="75" acceptCount="1000"/> 重要参数说明: executor:表示使用该参数值对应的线程池

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Tomcat优化之配置线程池

    大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点: 线程池一般有三个重要参数: 最大线程数。在程序运行的任何时候,线程数总数都不会超过这个数。...辅助线程。主要负责监控线程池的状态:空闲线程是否超过最大空闲线程数或者小于最小空闲线程数等。如果不满足要求,就调整之。 来 看一下线程池究竟是怎么一回事?...配置 使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力。使用方式: 首先。...namePrefix: 线程前缀 maxThreads : 最大并发连接数,不配置时默认200,一般建议设置500~ 800 ,要根据自己的硬件设施条件和实际业务需求而定。...acceptorThreadCount: 用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核 CPU 一般配置为 2。

    2.2K80

    MySQL MySql连接数与线程池

    Threads_running:非睡眠状态的连接数,通常指并发连接数 线程池 线程池由许多线程组构成,每个组管理一系列客户端连接。...否则,线程池会认为该语句执行滞后,并开启另一个线程作为监听线程(如果有必要的话)。为了保证没有线程组被执行滞后的语句阻塞,线程池有个后台线程定期监控线程组状态。...这种阻塞会导致线程组变得不可用,所以会有针对线程组的回调来确保线程池可以在改组中立即开启一个新的线程来执行其它的语句。当返回一个阻塞线程时,线程池允许立即重启它。...…… 参考连接: http://dev.mysql.com/doc/refman/5.7/en/thread-pool-operation.html 1、 线程池调优 thread_pool_size...是控制线程池性能的最重要的参数。

    8.1K20

    Java线程池如何合理配置核心线程数

    我相信大家都用过线程池,但是线程池数量设置为多少比较合理呢? 线程数的设置的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能,因此让我们一起去探索吧!...IO 密集型任务:比如像 MySQL 数据库、文件的读写、网络通信等任务,这类任务不会特别消耗 CPU 资源,但是 IO 操作比较耗时,会占用比较多时间。...比如 8 核 CPU,按照公式就是 2 / ( 1 - 0.9 ) = 20 个线程数 上图是 IO 密集型任务的一个测试,是在双核处理器上开不同的线程数(从 1 到 40)来测试对程序性能的影响,可以看到线程池数量达到...同时,有很多线程池的应用,比如 Tomcat、Redis、Jdbc 等,每个应用设置的线程数也是不同的,比如 Tomcat 为流量入口,那么线程数的设置可能就要比其他应用要大。...总结 通过对线程数设置的探究,我们可以得知线程数的设置首先和 CPU 核心数有莫大关联,除此之外,我们需要根据任务类型的不同选择对应的策略, 线程的平均工作时间所占比例越高,就需要越少的线程; 线程的平均等待时间所占比例越高

    4.8K20

    线程池:第三章:线程池的手写改造和拒绝策略以及线程池配置合理线程数

    根据阿里巴巴开发手册: 我们线程池使用ThreadPoolExecutor的方式进行创建,下面看底层源码: 有七个参数: 现在创建它:核心线程数2,同时执行的最大线程数5,多余线程存活时间1L,单位秒...,阻塞队列3,默认线程工厂,拒绝策略 创建线程池: 第一种拒绝策略:AbortPolicy:超出最大线程数,直接抛出RejectedExecutionException异常阻止系统正常运行。 ...线程池配置合理线程数 查看机器的核心数 ------------------------ CPU密集型:cpu的核数+1,这样可以尽量减少切换 IO密集型:cpu的核数*10(一般阻塞系统是...0.9) 业务场景: 1:高并发、任务执行时间短的业务,线程池线程数可以设置为CPU核数+1,减少线程上下文的切换 2:并发不高、任务执行时间长的业务这就需要区分开看了: a)假如是业务时间长集中在IO...增加服务器是第二步(一般政府项目的首先,因为不用对项目技术做大改动,求一个稳,但前提是资金充足),至于线程池的设置,设置参考 2 。

    95530

    MySQL 线程池&连接池&长连接&短连接

    线程池 简介 1、mysql每连接每线程,mysql都分配一个单独的线程,该线程处理客户端发来的所有命令 2、每个线程会占用一定的系统资源,线程数越多消耗的系统资源也越多 3、线程的创建和销毁有一定的开销...,由于长查询占据了线程池的线程,导致线程池出现效率低下的情况 组成 1、线程池由多个分组组成 2、每个分组由一个任务队列、一个listener线程以及多个worker线程组成 3、还存在一个timer线程...(用于检查线程池分组的状态以及定期清理掉过期的客户端连接) 连接池 简介 1、连接池是一些网络代理服务或应用服务器的特性(如J2EE服务器) 2、实现了一个持久连接的“池”,允许其它程序,客户端来连接...长连接是一些驱动、驱动框架,ORM工具的特性,由驱动来保持连接句柄的打开,以便后续的数据库操作可以重用连接,从而减少数据库的连接开销 连接池是应用服务的组件,可以通过参数来配置连接数、连接监测、连接的生命周期...参考:《MySQL DBA 修炼之道》

    2.6K20

    Java 线程池配置的常见误区

    ,所以线程的池化在各种语言内都有实践,当然在 Java 语言中线程池是也非常重要的一部分,有 Doug Lea 大神对线程池的封装,我们使用的时候是非常方便,但也可能会因为不了解其具体实现,对线程池的配置参数存在误解...,但也可能会因为不了解其具体实现,对线程池的配置参数存在误解。...根据上文可知,线程池能支持BlockingQueue Size个任务同时提交,我们把最大同时提交的任务个数,称为并发量,配置线程池时,了解并发量异常重要。...业务峰值 除此之外,配置线程池参数时,一定要考虑业务场景。...深入理解原理后,面对复杂情况,才有灵活配置的能力。 线程池可讨论的点有很多,本文应该会持续修订,请关注原文。

    74720

    线程池最佳线程数量到底要如何配置?

    ScheduledExecutorService,通过它的schedule提交线程,并且可以配置延迟执行的时间。...类创建线程池的。...五、最佳线程数 在使用线程池时,很多同学都有这样的疑问,不知道如何配置线程数量,今天我们一起探讨一下这个问题。 1.经验值 配置线程数量之前,首先要看任务的类型是 IO密集型,还是CPU密集型?...IO密集型配置线程数经验值是:2N,其中N代表CPU核数。 CPU密集型配置线程数经验值是:N + 1,其中N代表CPU核数。 如果获取N的值?...availableProcessors = Runtime.getRuntime().availableProcessors(); 那么问题来了,混合型(既包含IO密集型,又包含CPU密集型)的如何配置线程数

    3K32

    线程池-线程池的好处

    1.线程池的好处。 线程使应用能够更加充分合理的协调利用cpu 、内存、网络、i/o等系统资源。 线程的创建需要开辟虚拟机栈,本地方法栈、程序计数器等线程私有的内存空间。...所以需要通过线程池协调多个线程,并实现类似主次线程隔离、定时执行、周期执行等任务。线程池的作用包括: 利用线程池管理并复用线程、控制最大并发数等。 实现任务线程队列缓存策略和拒绝机制。...隔离线程环境。比如,交易服务和搜索服务在同一台服务器上,分别开启两个线程池,交易线程的资源消耗明显要大;因此,通过配置独立的线程池,将较慢的交易服务与搜索服务隔开,避免个服务线程互相影响。...在了解线程池的基本作用后,我们学习一下线程池是如何创建线程的。...如果等于0,则任务执行完成后,没有任何请求进入时销毁线程池的线程;如果大于0,即使本地任务执行完毕,核心线程也不会被销毁。

    2.2K21

    【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )

    文章目录 一、线程池作用 二、线程池种类 三、线程池工作机制 四、线程池任务调度源码解析 一、线程池作用 ---- 线程池作用 : ① 避免创建线程 : 避免每次使用线程时 , 都需要 创建线程对象 ;...---- 线程池种类 : ① newCachedThreadPool : 可缓存线程池 , 如果 线程池线程个数已满 , 回收空闲线程 , 如果没有空闲线程 , 此时会创建新线程 ; ② newFixedThreadPool...后到的后执行 ) , LIFO 后入先出 ( 后到的先执行 ) ; 三、线程池工作机制 ---- 线程池线程相关概念: 线程数 : 线程池的 有 最大线程数 MaxSzie , 核心线程数 CoreSize..., 任务拒绝后 , 处理善后 ; 四、线程池任务调度源码解析 ---- 在 AsyncTask.java 中 , 在静态代码块中 , 自己 自定义创建了线程池 , 没有使用上述四种线程池 ; 创建线程池时传入的参数...如果 任务成功加入队列, 需要 双重检查 ( 进入该方法后, 线程池可能关闭 ), 在进入该方法后, 是否添加了一个线程, 或者线程池是否关闭.

    1.7K00

    【Android 异步操作】线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTask 使用线程池示例 )

    文章目录 一、线程池简介 二、线程池初始化方法简介 三、线程池使用示例 一、线程池简介 ---- 线程池一般是实现了 ExecutorService 接口的类 , 一般使用 ThreadPoolExecutor..., 合理控制并发数 , 能提高 CPU 使用效率 ; 二、线程池初始化方法简介 ---- 线程池初始化方法简介 : newCachedThreadPool : 创建 可缓存线程池 ; 如果线程池长度超过处理需要...是 自己配置的线程池 , 没有使用 Java 默认提供的四种线程池 , Java 提供的四种线程池是 可缓存线程池 , 定长线程池 , 定长周期任务线程池 , 单线程线程池 ; THREAD_POOL_EXECUTOR...线程池配置代码如下 : new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS...sThreadFactory, new ThreadPoolExecutor.DiscardOldestPolicy()); 下面对 THREAD_POOL_EXECUTOR 自己配置的线程池参数进行说明解析

    4K01

    ThreadPoolExecutor 线程池配置 和 阻塞队列BlockingQueue

    [JDK] ThreadPoolExecutor 线程池配置 和 阻塞队列BlockingQueue 创建和配置 ExecutorService 执行器服务,它使用可能的几个池线程之一执行每个提交的任务...,通常使用Executors工厂方法配置 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行集合任务时使用的线程...否则,在手动配置和调整此类时,使用以下指导: 核心和最大池大小 ThreadPoolExecutor 将根据 corePoolSize(参见 getCorePoolSize())和 maximumPoolSize...//创建任务并提交到线程池中:task@ 9 //开始执行任务:task@ 9 //创建任务并提交到线程池中:task@ 10 //开始执行任务:task@ 10 } 线程配置和管理...核心池的大小是目标的大小;线程池的实现试图维护池的大小;即使没有任务执行,池的大小也等于核心池的大小,并直到工作队列充满前,池都不会创建更多的线程。

    2.8K20

    Java线程池配置由繁至简,找到适合自己的天命线程池(一)

    换句话说,假如你需要线程池去处理的任务数不多,qps不高,甚至峰值也不高,未来也不会有大的变化,那恭喜你,你已经找到了你的真命线程池,直接使用Executors.newCachedThreadPool(...罢特,我也相信,这种情况还是少,大部分人都是因为需要线程池来“兜底”,也就是任务数或者任务峰值线程池真的撑不住,才来查询怎么找到适合自己的配置,那咱们不慌,就继续往下看。...,一行代码就可以创建的线程池供开发者使用,但是《阿里巴巴Java开发手册》里却不推荐使用,这是为什么呢?...我们先来看一下上面提到的,通过Executors类创建的线程池newCachedThreadPool://创建一个系统预设好的线程池ExecutorService executorService = Executors.newCachedThreadPool...,不是最大线程数是Max,就是任务队列是无界的,都满足上面的条件,所以系统预设的线程池,手册都不建议使用。

    50420
    领券