尤其是以下三个配置项:maxConnections、maxThreads、acceptCount。

1.4.1 Tomcat的高效配置

Tomcat的maxConnections、maxThreads、acceptCount三大配置,分别表示最大连接数,最大线程数、最大的等待数,可以通过application.yml配置文件来改变这个三个值,一个标准的示例如下:

server:tomcat:uri-encoding: UTF-8#最大工作线程数,默认200, 4核8g内存,线程数经验值800#操作系统做线程之间的切换调度是有系统开销的,所以不是越多越好。max-threads: 1000# 等待队列长度,默认100accept-count: 1000max-connections: 20000# 最小工作空闲线程数,默认10, 适当增大一些,以便应对突然增长的访问量min-spare-threads: 100

1.4.2 详解:maxConnections、maxThreads、acceptCount

tomcat中maxConnections、maxThreads、acceptCount的具体含义是什么呢?参考官方文档,对三者的含义说明如下:
一、accept-count:最大等待数
官方文档的说明为:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。当队列已满时,任何的连接请求都将被拒绝。accept-count的默认值为100。详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。
二、maxThreads:最大线程数
每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认200,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换成本,而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。线程数的经验值为:1核2g内存为200,线程数经验值200;4核8g内存,线程数经验值800。
三、maxConnections:最大连接数
官方文档的说明为:
这个参数是指在同一时间,tomcat能够接受的最大连接数。对于Java的阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器,默认值将是执行器中maxthreads的值。对于Java 新的NIO模式,maxConnections 默认值是10000。对于windows上APR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数。如果设置为-1,则禁用maxconnections功能,表示不限制tomcat容器的连接数。maxConnections和accept-count的关系为:当连接数达到最大值maxConnections后,系统会继续接收连接,但不会超过acceptCount的值。

Tomcat线程连接池参数优化相关推荐

  1. Tomcat DBCP连接池导致的线程阻塞问题

    Tomcat DBCP连接池导致的线程阻塞问题 问题描述 解决流程 问题描述 最近在测试一个多线程任务时出现了我本地项目不报错,不停止,但是刷新任何的页面或者重新加载整个网站服务都无法继续执行操作的问 ...

  2. 在独立Java应用程序中使用Tomcat JDBC连接池

    这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...

  3. JDBC 连接池参数

    JDBC连接池参数: jdbc.initialSize=0 //初始化连接 jdbc.maxActive=30 //连接池的最大数据库连接数,设为0表示无限制 jdbc.maxIdle=20 //没有 ...

  4. tomcat jdbc连接池配置属性详解之参数说明

    driverClassName 数据库驱动类,针对mysql填com.mysql.jdbc.Driver username 用户名 password 密码 maxActive 最大允许的连接数 max ...

  5. tomcat 7连接池配置与使用

    2019独角兽企业重金招聘Python工程师标准>>> 1.配置数据源Resource ,多种方式: a)存为context.xml,于项目WebRoot/META-INF下: b) ...

  6. Tomcat 6连接池配置

    Tomcat 6,配置了连接池,可是运行总是报HTTP Status 500 - javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp ...

  7. java 线程 连接池_java程序实现线程连接池功能

    下面是以前学java 的时候写的一个实现,没有考虑很多,比如同步处理等等.懒得改,你就看看吧. package com.wangjia.tools; import java.io.Serializab ...

  8. quartz 2.2.1 jdbc 连接池参数配置

    /** The JDBC database driver. */指定连接驱动public static final String DB_DRIVER = "driver";/** ...

  9. druid连接池参数配置不当引起接口耗时长

    负责的消息中心推送服务出现接口耗时较长的现象,结合链路系统排查,发现在获取数据库连接这一步耗时很久 查看应用的数据库连接池监控,发现 连接池中的连接数变化频繁,有偶尔的等待连接的情况(与上述接口耗时慢 ...

最新文章

  1. python3程序下载安装_程序猿的语言,Python 3.7.0下载安装
  2. linux的自定义input,Linux Input子系统之第一篇(input_dev/input_handle/input_handler)
  3. NSArray和NSMutableArray
  4. MongoDB高级——安全
  5. Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定
  6. Mysql在window下的表现_Mysql在windows系统下的配置
  7. 【Python】:用python做下百度2014笔试题
  8. 短信轰渣器搭建源码下载
  9. 移动通信原理B-------例题解答2
  10. 简易计时器的设计与实现-DE2|VHDL|EDA|FPGA/CPLD
  11. 飞鸽传书2007绿色版下载
  12. IP地址、网络地址、网关的作用
  13. 一招教你学会如何用excel求重复项最大值
  14. 如何确定产品生命周期
  15. @开发者:个推小程序消息推送解决方案来了
  16. hcs12 microcontroller 笔记
  17. PHP - Sessions
  18. 数据采集爬虫ip代理基本原理
  19. Java SE 005 运算符 续
  20. 我的2017年文章汇总——深度学习篇

热门文章

  1. XDocument 获取包括第一行的声明(版本、编码)的所有节点
  2. 如何调用java的包_jsp如何调用java包
  3. harmonyos2.0如何申请,华为鸿蒙HarmonyOS2.0手机开发者Beta版公测申请地址方法_专题_53货源网...
  4. thinkphp mysql 日志_thinkphp5 日志
  5. java正则表达式去除重复_Java正则表达式:重复捕获组
  6. Java中main函数只能调用同类中的静态方法?
  7. box-sizing详解
  8. php中strtotime的意思,php中strtotime函数用法详解
  9. mysql增量备份二进制日志,mysql增量备份二进制日志shell脚本
  10. java保存数字_Java:JFormattedTextField保存数字