精华内容
下载资源
问答
  • 首先看看springboot内置的tomcat,该如何配置这两个参数# 在配置文件中添加如下内容# tomcat最大线程数,默认为200server.tomcat.max-threads=200# tomcat最大连接数,默认为10000(网上的说法)server.tomcat.max-...

    首先看看springboot内置的tomcat,该如何配置这两个参数

    # 在配置文件中添加如下内容

    # tomcat最大线程数,默认为200

    server.tomcat.max-threads=200

    # tomcat最大连接数,默认为10000(网上的说法)

    server.tomcat.max-connections=300

    如何理解上面两个参数

    为了方便理解,我这里使用了springboot编写了一个简单了的服务,包含一个模拟登录的接口,并使用jmeter进行测试,不了解jmeter如何使用的朋友可以翻看我的历史文章。部分代码如下

    // java 代码

    @RestController

    @RequestMapping("/user")

    public class UserController {

    @Autowired

    private UsersRepository usersRepository;

    @PostMapping("/login")

    public String login(Users user) throws InterruptedException {

    // 这里将线程挂起3秒,方便观察结果

    Thread.sleep(3000);

    Users checkUser = usersRepository.findByName(user.getName());

    if(checkUser == null)

    return "用户不存在";

    if(!checkUser.getPassword().equals(user.getPassword()))

    return "密码错误";

    System.out.println("用户:" + checkUser.getName() + ",登录成功");

    return "登录成功";

    }

    }

    接下来,设置jmeter中的线程数,分别测试以下场景返回的结果

    注意:我在java代码中添加将线程挂起3秒的语句,实际的响应时间应该减去3秒

    场景1:并发请求数 <= tomcat最大线程数200

    设置jmeter并发请求数量为200

    结果统计

    结论:可以看到200个请求,平均响应时间为(3156-3000)=156ms,最小响应时间为23ms,最大响应时间为336ms,响应结果正常。

    场景2:并发数 >tomcat最大线程数200,以下我将jmeter线程数设置为201,再来看看结果

    image.png

    看了下,平均值,最小值好像没什么异常,但是最大值却去到了5606毫秒,接近6S的时间。为什么会有个接近6S的最大值,原因很简单,因为tomcat最大的线程数为200,201的并发请求量,超出了并发处理的数量200,多出来的1个请求,需要等待某个处理中的请求处理完成。

    这里我翻看了jmeter中大部分的http请求,验证了我的想法。大部分的http请求,响应时间都是3000多毫秒,只有最后一个响应的请求,响应的时间为5606毫秒,截图如下

    image.png

    场景3:请求数超过最大连接数300,这里将jmeter并发线程数设置为600

    异常数量由原本的百分之0变成37.45%

    image.png

    可以看到有大量的没有正常响应的http请求,原因很简单,因为超过了tomcat设置的最大连接数,服务器拒绝了该次请求的连接

    展开全文
  • 匿名用户1级2017-07-18 回答展开全部tomcat最大线程数的设置Tomcat的server.xml中连接器设置如下maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" ...

    匿名用户

    1级

    2017-07-18 回答

    展开全部

    tomcat最大线程数的设置

    Tomcat的server.xml中连接器设置如下

    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

    enableLookups="false" redirectPort="8443" acceptCount="100"

    debug="0" connectionTimeout="20000"

    disableUploadTimeout="true" />

    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

    enableLookups="false" redirectPort="8443" acceptCount="100"

    debug="0" connectionTimeout="20000"

    disableUploadTimeout="true" />

    tomcat在配置时设置最大线程数,当前线程数超过这个数值时会出错,那么有没有办法捕获到这个错误,从而在client端显示出错信息?

    2. 如何加大tomcat连接数

    在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:

    minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10

    maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75

    acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100

    enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false

    connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

    其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

    web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。tomcat5中的配置示例:

    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

    enableLookups="false" redirectPort="8443" acceptCount="100"

    debug="0" connectionTimeout="20000"

    disableUploadTimeout="true" />

    对于其他端口的侦听配置,以此类推。

    3. tomcat中如何禁止列目录下的文件

    在{tomcat_home}/conf/web.xml中,把listings参数设置成false即可,如下:

    listings

    false

    listings

    false

    4.如何加大tomcat可以使用的内存

    tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

    Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:

    JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'

    需要把这个两个参数值调大。例如:

    JAVA_OPTS='-Xms256m -Xmx512m'

    表示初始化内存为256MB,可以使用的最大内存为512MB

    展开全文
  • 一、前言Tomcat 作为 Java Web 程序比较常用的 Servlet ...在 Tomcat7 及以下 Linux 中默认启用的是 BIO 模式,Tomcat8 及以上使用的是 NIO 模式,利用 Java 的异步 IO 处理,可以通过少量的线程处理大量的连接请求...

    一、前言

    Tomcat 作为 Java Web 程序比较常用的 Servlet 容器实现,在 Web 开发中有比较重要的地位。

    二、Tomcat使用的IO模式

    Tomcat 有三种 IO 模式,BIO、NIO、APR。

    在 Tomcat7 及以下 Linux 中默认启用的是 BIO 模式,Tomcat8 及以上使用的是 NIO 模式,利用 Java 的异步 IO 处理,可以通过少量的线程处理大量的连接请求。

    除这两种方式外,还有一种 APR(Apache Portable Runtime) 模式,从操作系统层面解决 IO 阻塞问题。Tomcat7 或Tomcat8 在 Win7 或以上的系统中启动默认使用这种方式。

    要注意的是,在 SpringBoot 内嵌的 Tomcat 不自动开启 APR 模式,需要手动进行配置。

    可以通过启动日志看到 SpringBoot 中启用的 IO 模式:

    2021-01-26 17:22:53.076 INFO 8604 --- [nio-9999-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'

    2021-01-26 17:22:53.076 INFO 8604 --- [nio-9999-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'

    2021-01-26 17:22:53.087 INFO 8604 --- [nio-9999-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 10 ms

    关于 BIO、NIO、APR 的详解不做过多介绍。

    三、Tomcat主要的配置参数

    3.1 maxConnections 最大连接数

    这个参数是指在同一时间,Tomcat 能够接受的最大连接数。对于 Java 的阻塞式 BIO,默认值是 maxthreads 的值;可以通过配置 Executor 执行器来修改这个值。

    对于 Java 新的 NIO 模式,maxConnections 默认值是 10000。

    对于 windows 上 APR/native IO模式,maxConnections 默认值为 8192,这是出于性能原因,如果配置的值不是 1024 的倍数,maxConnections 的实际值将减少到 1024 的最大倍数。

    如果设置为 -1,则禁用 maxconnections 功能,表示不限制tomcat容器的连接数。

    简单来说就是 Tomcat 总共允许建立多少连接。

    3.2 maxThreads 最大线程数

    每一次 Http 请求到达 Web 服务,Tomcat 都会创建一个线程来处理该请求,最大线程数决定了 Web 服务同时可以处理多少请求。maxThreads 默认值为 200,建议增加,但是增加线程是有成本的,更多的线程代表会有更多的上下文切换,也意味着 JVM 会分配更多的内存。

    3.3 acceptCount 排队连接数

    当 Tomcat 的最大连接数 maxConnections 被占满之后,后续的请求就会进行排队,排队的最大数量就是 acceptCount,举个例子,当前 maxConnections 为 10,acceptCount 为 5,并且 maxConnections 已经使用了 10,那么后续的请求就会排队,每来一个请求,acceptCount 就会 +1 ,当 acceptCount 增加到 5 ,在后续的请求就会被直接放弃。

    3.4 connection-timeout 连接建立时间

    HTTP 协议运行在 TCP 之上,所以每次请求到来,客户端和服务端会建立一次 TCP 连接,建立连接需要三次握手,所以就需要一定的时间,connection-timeout 限制了连接建立的时间,当建立连接时间超过这个值,连接就会建立失败。默认为 20000ms。

    四、高效配置

    常用配置:

    server:

    tomcat:

    accept-count: 100

    threads:

    # 1核2g内存为200,4核8g内存为800

    max: 800

    # 最小空闲线程数量,保证线程池中一直有最少100个线程,防止流量激增

    min-spare: 100

    # 连接超时时间

    connection-timeout: 5000

    # 最大连接数,可以适应 APR 模式

    max-connections: 8192

    五、通俗解释

    我们可以把 Tomcat 比作餐厅,餐厅有排队取号区域,餐桌,厨房,厨师。

    maxConnections 可以类比为餐桌数量,acceptCount 可以类比为排队取号队列长度,maxThreads 可以类比为厨房里厨师的数量。

    当客人来的时候,如果餐桌数量没坐满,客人可以直接上餐桌点餐,点餐之后,厨师就会做这一桌的食物,一个厨师同时只能为一桌服务。

    当客人来的时候,如果餐桌坐满了,就需要去排队取号区排队取号,如果取号区人也排满了,餐厅就会赶你走。

    由于厨师数量可能少于餐桌的数量,所以会出现多个厨师负责多个餐桌的情乱,也就是线程数量不够,连接等待处理的情况。

    六、简单的测试

    SpringBoot 配置:

    server:

    port: 9999

    tomcat:

    accept-count: 1

    threads:

    max: 10

    min-spare: 10

    connection-timeout: 100

    max-connections: 1

    接口定义(模拟处理需要 5 秒):

    @GetMapping("/tomcat-meter")

    public R> tomcatMeter() throws InterruptedException {

    TimeUnit.SECONDS.sleep(5);

    return Resp.new200("this is tomcat meter");

    }

    使用 Jmeter 同时使用 50 个线程访问测试:

    e507ed48c188

    01.png

    查看测试报告:

    e507ed48c188

    02.png

    测试结果:

    只有两个请求请求成功,因为最大连接数为1 ,排队数量为 1,所以最多只能处理两个请求,其余的 48 个请求直接被丢弃。

    展开全文
  • tomcat配置文件server.xml的配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 ...

    1.源码分析

    Tomcat的server.xml中连接器设置如下
    在这里插入图片描述
    所以最大线程数是150,当前线程数超过这个数值时会出错。

    解决办法:再开一个服务器,构成分布式。

    在tomcat配置文件server.xml的配置中,和连接数相关的参数有:
    minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
    maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
    acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100

    展开全文
  • tomcat最大连接数修改

    2021-01-14 15:40:13
    1 tomcat 的server.xml的路径vim /usr/local/tomcat/conf/server.xml1.1 最大连接数相关maxThreads="50" minSpareThreads="50"/>maxThreads:表示最多同时处理的连接(以上是50个)minSpareThreads:表示没有没有...
  • 编辑server.xml文件,找到Connector文段进行修改,每行的...普通配置如下(可以按自己的实际情况来配置):最大线程数maxThreads配 1000,最低minSpareThreads配100,最大连接数maxConnections配500,acceptCount配250
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • 查看服务器(Tomcat,JAVA应用)中的连接数和线程数查看服务器的状态,大致分为两种方案:(1)使用现成的工具,(2)直接使用Linux的命令查看。现成的工具,如JDK自带的jconsole工具可以方便的查看线程信息(此外还可以...
  • packagecom.chat.demo;/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements. See the NOTICE file distributed with* this work for additional informat...
  • 前言在使用tomcat时,经常会遇到连接数线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml中写到过:Connector的主要功能,是接收连接...
  • tomcat最大线程数,单台tomcat最大并发量,tomcat最大线程数的设置Connectorport="8080"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"debug=...
  • 前言在用tomcat时,经常会遇到连接数线程数之类的配置问题,要真正了解这些概念,必需先理解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接...
  • 转自: ...所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置...
  • tomcat默认支持的最大线程数是200,当线程数达到200后,将新的线程加入等待队列,等待队列默认100,当等待队列达到100后,直接拒绝此次请求返回connectionrefused。 连接超时时间默认为20秒。 来着tomcat官方文档...
  • Tomcat修改最大连接数

    2021-01-14 15:40:14
    1、环境说明Linux下tomcat运行期2、增加jvm 内存的配置#vi catalina.sh插入如下:JAVA_OPTS='-Xms256m -Xmx512m'3、INFO: Maximum number of threads (200) created for ...最大线程数错误解决方案:使用线程池,用较...
  • 线程名字的前缀,线程池中线程名字为:namePrefix+线程编号 四、查看当前状态 上面介绍了Tomcat连接数线程数的概念以及如何设置,下面说明如何查看服务器中的连接数和线程数。 查看服务器的状态,大致分为两种方案...
  • Tomcat当前线程数

    2021-03-14 21:44:38
    当前线程由apache动态管理。frompache的源代码中的worker.c: 根据需要启动线程。以下是启动工作线程的主要流程。static int worker_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s)startup_children...
  • 1G硬盘 SCSI 140 G 分区情况 /boot(500M) /SWAP (2048M) /(剩余全部磁盘空间)服务器是新的HP全新配置服务器的WEB配置情况:红旗LINUX5.0服务亚洲版+TOMCAT5.5.17+MYSQL5.0.22+JDK1.5.0.6TOMCAT和 MYSQL以及JD的安...
  • 前言在使用tomcat时,经常会遇到连接数线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接...
  • 并发和Tomcat线程数

    2020-12-22 01:13:22
    转自最近一直在解决线上一个问题,表现是:Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s。服务器性能很好,Tomcat版本是7.0.54,配置如下:...
  • 摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVMjConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用...
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • Tomcat最大并发

    2021-03-13 03:16:59
    日常应用中,单台Tomcat能支持最大的并发是多少?作为一个有经验的Java Web开发人员对这个问题应该有大概的印象,并会让问题再具体点,比如Tomcat版本,运行模式,并发请求允许的最大响应时间等,然后针对其中某个...
  • tomcat设置线程数

    2020-12-24 10:53:15
    查看Tomcat线程数 修改server.xml文件,增加maxThreads、minSpareThreads、maxSpareThreads、acceptCount vi /tomcat/conf/server.xml 增加 maxThreads="150...minProcessors:最小空闲连接线程数,用于提高系统处...
  • 一、JVM(JDK)最大线程数JVM最大创建线程数量由JVM堆内存大小、线程的Stack内存大小、系统最大可创建线程数(Java线程的实现是基于底层系统的线程机制来实现的,Windows下_beginthreadex,Linux下pthread_create)三个...
  • 在使用tomcat时,经常会遇到连接数线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,599
精华内容 20,639
关键字:

tomcat最大连接数和最大线程数