springboot tomcat默认线程数_springboot tomcat最大线程数与最大连接数
首先看看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设置的最大连接数,服务器拒绝了该次请求的连接
springboot tomcat默认线程数_springboot tomcat最大线程数与最大连接数相关推荐
- springboot 初始化线程池_springboot项目中线程池的使用
在application.properties添加线程池配置项 spring.task.scheduling.thread-name-prefix=SysAsyncExecutor_ spring.t ...
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
- tomcat默认端口号(三个tomcat端口号)
tomcat默认端口号(三个tomcat端口号) 2020-05-08 10:43:21 共10个回答 Tomcat的默认端口号是多少 您好,提问者:Tomcat的默认端口号是:8080.weblog ...
- 如何修改tomcat默认端口号(详细步骤)
tomcat默认的端口是8080(访问端口) http的默认端口是80. 如果访问的时候 输入http://www.baidu.com 相当于http://www.baidu.com:80 真正在项目 ...
- springboot容器化打包部署_SpringBoot应用部署于外置Tomcat容器的方法
0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手.但考虑到实际的情形中 ...
- Springboot 自定义Tomcat默认Servlet 资源路径
问题来源: 这是一个复杂的需求. [controller 拦截所有请求–>判断是否存在资源 -->如果存在资源则转发到该资源] 问题就卡在这里,因为这是一个死循环. 所以想到了使用两个se ...
- Springboot源码分析之内嵌tomcat源码分析
Springboot源码是内嵌tomcat的,这个和完整的tomcat还是不同. 内嵌tomcat的源码在tomcat-embed-core等3个jar包里 展开tomcat-embed-core的c ...
- 深入分析SpringBoot源码如何内嵌Tomcat容器?
作者:陌北有棵树,Java人,架构师社区合伙人! [一]总述 SpringBoot的诞生,极大的简化了Spring框架的使用过程,提升了开发效率,可以把它理解为一个整合包,使用了SpringBoot, ...
- tomcat 默认150连接数怎么支持几万大并发的?集群?
刷脉脉看到这个问题,不错的问题值得讨论. 之前做过高并发场景下的网关应用,也针对于jetty.netty.jvm进行过参数配置与调优,对于下面几个同学的讨论分析下. 程序猿关平 怎么可能150连接数, ...
最新文章
- 使用硬件定时器软模拟多个定时器(8.15改进版)
- linux 根目录read only,linux – 使readonly / etc可写
- 【转】.Net 架构图
- Java中的DES加密与解密工具类
- VMware Cloud Director 10.3 发布(下载) - 云计算调配和管理平台
- 数字密码锁设计(利用数字逻辑电路的电子密码锁)
- 网站投票系统制作与流程
- 未转变者怎么调服务器难度,未转变者服务器怎么设置出生点 | 手游网游页游攻略大全...
- 【组合数学 】 推广牛顿二项式 ( 牛顿二项式推广 | 推导流程 | 题目解析 )
- Opencv中的数据存储(1)
- matlab去除红眼代码及详细介绍
- 固态硬盘的计算机需要进行磁盘碎片整理吗,SSD固态硬盘需要碎片整理吗 固态盘切忌磁盘碎片整理...
- drf路由组件Routers
- Java温习——表达式expression
- tips pycharm 配搭git
- 基于51单片机的智能雨刷设计
- 使用Stream操作List
- 语音识别数据集及性能评测指标WER
- 【C语言】字符画实现游戏掘地求升
- hiredis的各种windows版本
热门文章
- 我国在量子计算机领域的发展情况的感受,量子计算机的现状及发展趋势
- 板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
- 北风:毕业一年后,你收获了哪些东西?
- 前端浏览器兼容问题总结
- 晶体管的高频等效模型(模电4.2小节)
- 鸿蒙系统基于安卓是什么意思,华为鸿蒙系统基于安卓还是Linux呢?
- JavaScript中的call,apply,bind区别及应用(包含手写call/apply/bind)
- Windows 无法使用139端口访问共享
- (串口通信编程) 开源串口调试助手Common (Com Monitor)
- FFmpeg源码分析:av_read_frame()读取音视频帧