精华内容
下载资源
问答
  • 匿名用户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

    展开全文
  • 编辑server.xml文件,找到Connector文段进行修改,每行的...普通配置如下(可以按自己的实际情况来配置):最大线程数maxThreads配 1000,最低minSpareThreads配100,最大连接数maxConnections配500,acceptCount配250

    编辑server.xml文件,找到Connector文段进行修改,每行的后面都不要有空格,每行的前面都用tab健

    <Connector port="80" protocol="HTTP/1.1"
    		connectionTimeout="20000"
    		enableLookups="false"
    		maxThreads="1000"
    		minSpareThreads="100"
    		maxConnections="500"
    		acceptCount="250"
    		redirectPort="8443" />
    

    普通配置如下(可以按自己的实际情况来配置):最大线程数maxThreads配 1000,最低minSpareThreads配100,最大连接数maxConnections配500,acceptCount配250

    展开全文
  • 一、前言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 个请求直接被丢弃。

    展开全文
  • 首先看看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设置的最大连接数,服务器拒绝了该次请求的连接

    展开全文
  • 并发和Tomcat线程数

    2020-12-22 01:13:22
    转自最近一直在解决线上一个问题,表现是:Tomcat每到凌晨会有一个...服务器性能很好,Tomcat版本是7.0.54,配置如下:maxThreads="3000" minSpareThreads="800"/>connectionTimeout="60000"keepAliveTimeout="3...
  • tomcat配置文件server.xml的配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 ...
  • tomcat最大线程数,单台tomcat最大并发量,tomcat最大线程数的设置Connectorport="8080"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"debug=...
  • 调整Tomcat的并发线程数到5000+1. 调整server.xml的配置先调整maxThreads的数值,在未调整任何参数之前,默认的并发线程可以达到40。调整此项后可以达到1800左右。maxThreads="32000"/>再试试使用非阻塞的库。...
  • minSpareThreads:终保持运行状态的最小线程数。 这包括活动线程和空闲线程。 如果未指定,则使用默认值10。 maxConnections: 服务器在任何给定时间将接受和处理的最大连接数。 对于BIO,除非使用执行程序,否则...
  • 服务器性能很好,Tomcat版本是7.0.54,配置如下: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="3000" minSpareThreads="800"/> <Connector execut...
  • 一、JVM(JDK)最大线程数JVM最大创建线程数量由JVM堆内存大小、线程的Stack内存大小、系统最大可创建线程数(Java线程的实现是基于底层系统的线程机制来实现的,Windows下_beginthreadex,Linux下pthread_create)三个...
  • 我们服务器的配置情况如下P4 3.6内存 1G硬盘 SCSI 140 G 分区情况 /boot(500M) /SWAP (2048M) /(剩余全部磁盘空间)服务器是新的HP全新配置服务器的WEB配置情况:红旗LINUX5.0服务亚洲版+TOMCAT5.5.17+MYSQL5.0.22+...
  • tomcat常用配置详解和优化方法参考:...
  • 在网上看到找了很多的oracle 数据源的连接的配置,真的是很难得成功啊!今天终于成功了:在此和大家分享一下:主要是tomcat6.014和oracle9i 的连接:硬件环境我就不再强调了,实话俺也不怎么懂!呵呵··the first ...
  • 近期项目中,用 jenkins 热部署 web工程时,发现工程中静态持有的线程(将ScheduledExecutorService定时任务存储在静态Map中),导致不定时出现数据库访问事务关闭异常,如下:org.springframework.transaction....
  • Spring boot 弃用tomcat 作为内嵌服务器,转用undertowconfigurations {compile.exclude module: “spring-boot-starter-tomcat”}compile “org.springframework.boot:spring-boot-starter-undertow:$...
  • Tomcat基本配置详解

    2021-07-10 10:24:39
    Tomcat基本配置详解 1、Tomcat的启动与关闭 ​ Tomcat是基于Java开发的,所以在运行Tomcat是必须配置了jre (1)启动 在Tomcat的bin目录下startup.bat(windows下的)/startup.sh(Linux下的)脚本文件双击即可启动...
  • 前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接...
  • -XX:userParNewGC 可用来设置并行收集【多核CPU】 -XX:ParallelGCThreads 可用来增加并行度【多核CPU】 -XX:UseParallelGC 设置后可以使用并行清除收集器【多核CPU】 3、配置tomcat调用的虚拟机内存大小 (1)直接...
  • Tomcat中Acceptor线程run方法工作流程1.Acceptor线程启动时间点2.Acceptor.run()方法调用链源码跟踪1). Acceptor.run()2). NioEndpoint.setSocketOptions(SocketChannel socket)NioEndpoint$Poller.register(final ...
  • tomcat配置及优化

    2021-05-10 01:03:19
    rm -rf test Tomcat jconsole监控远程jvm配置 Tomcat的三种模式及并发优化 Tomcat的运行模式有3种 1. bio 默认的模式,性能非常低下,没有经过任何优化处理和支持. 2. nio 利用java的异步io护理技术,noblocking IO...
  • 我通过创建固定数量的线程来执行HTTP GET数据检索来使用执行程序服务.executorService = ExecutorServiceFactory.getInstance().getExecutorService(Config.getInstance().getNumberOfThreads(), "ThreadExecutor_"+...
  • 本文前半部分结论存在严重错误,请看最后2015-1-20更新部分。...服务器性能很好,Tomcat版本是7.0.54,配置如下:事后thread dump看其实真正处于RUNNABLE状态的线程很少,绝大部分线程都处于TIMED_WAITIN...
  • 这段时间折腾了哈java web应用的压力测试,部署容器是tomcat 7。期间学到了蛮多散碎的知识点,及时梳理总结,构建良好...对tomcat来说,每一个进来的请求(request)都需要一个线程,直到该请求结束。如果同时进来的请...
  • Nginx设置线程数为整机内核数的俩倍!…1.设置线程数: 表示10秒内启动50个线程, 运行结果如下:10秒内启动了50个线程 2.设置集合点: Number of Simulated Users to Group by:50,表示集合50个线程后再并发(该数值不能...
  • 详解tomcat的连接数与线程池 1:认识Connector tomcat处理请求图 在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 ​ Connector的主要功能,...
  • tomcat在关闭时,有时会看到类似下面的警告信息:2014-7-10 13:44:02 org.apache.catalina.loader.WebappClassLoader clearReferencesThreadsSEVERE: The web application [] appears to have started a thread ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,278
精华内容 40,511
关键字:

tomcat没有配置线程数