首先看看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最大线程数与最大连接数相关推荐

  1. springboot 初始化线程池_springboot项目中线程池的使用

    在application.properties添加线程池配置项 spring.task.scheduling.thread-name-prefix=SysAsyncExecutor_ spring.t ...

  2. springboot设置文件上传大小(tomcat默认1M)

    application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...

  3. tomcat默认端口号(三个tomcat端口号)

    tomcat默认端口号(三个tomcat端口号) 2020-05-08 10:43:21 共10个回答 Tomcat的默认端口号是多少 您好,提问者:Tomcat的默认端口号是:8080.weblog ...

  4. 如何修改tomcat默认端口号(详细步骤)

    tomcat默认的端口是8080(访问端口) http的默认端口是80. 如果访问的时候 输入http://www.baidu.com 相当于http://www.baidu.com:80 真正在项目 ...

  5. springboot容器化打包部署_SpringBoot应用部署于外置Tomcat容器的方法

    0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手.但考虑到实际的情形中 ...

  6. Springboot 自定义Tomcat默认Servlet 资源路径

    问题来源: 这是一个复杂的需求. [controller 拦截所有请求–>判断是否存在资源 -->如果存在资源则转发到该资源] 问题就卡在这里,因为这是一个死循环. 所以想到了使用两个se ...

  7. Springboot源码分析之内嵌tomcat源码分析

    Springboot源码是内嵌tomcat的,这个和完整的tomcat还是不同. 内嵌tomcat的源码在tomcat-embed-core等3个jar包里 展开tomcat-embed-core的c ...

  8. 深入分析SpringBoot源码如何内嵌Tomcat容器?

    作者:陌北有棵树,Java人,架构师社区合伙人! [一]总述 SpringBoot的诞生,极大的简化了Spring框架的使用过程,提升了开发效率,可以把它理解为一个整合包,使用了SpringBoot, ...

  9. tomcat 默认150连接数怎么支持几万大并发的?集群?

    刷脉脉看到这个问题,不错的问题值得讨论. 之前做过高并发场景下的网关应用,也针对于jetty.netty.jvm进行过参数配置与调优,对于下面几个同学的讨论分析下. 程序猿关平 怎么可能150连接数, ...

最新文章

  1. 使用硬件定时器软模拟多个定时器(8.15改进版)
  2. linux 根目录read only,linux – 使readonly / etc可写
  3. 【转】.Net 架构图
  4. Java中的DES加密与解密工具类
  5. VMware Cloud Director 10.3 发布(下载) - 云计算调配和管理平台
  6. 数字密码锁设计(利用数字逻辑电路的电子密码锁)
  7. 网站投票系统制作与流程
  8. 未转变者怎么调服务器难度,未转变者服务器怎么设置出生点 | 手游网游页游攻略大全...
  9. 【组合数学 】 推广牛顿二项式 ( 牛顿二项式推广 | 推导流程 | 题目解析 )
  10. Opencv中的数据存储(1)
  11. matlab去除红眼代码及详细介绍
  12. 固态硬盘的计算机需要进行磁盘碎片整理吗,SSD固态硬盘需要碎片整理吗 固态盘切忌磁盘碎片整理...
  13. drf路由组件Routers
  14. Java温习——表达式expression
  15. tips pycharm 配搭git
  16. 基于51单片机的智能雨刷设计
  17. 使用Stream操作List
  18. 语音识别数据集及性能评测指标WER
  19. 【C语言】字符画实现游戏掘地求升
  20. hiredis的各种windows版本

热门文章

  1. 我国在量子计算机领域的发展情况的感受,量子计算机的现状及发展趋势
  2. 板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
  3. 北风:毕业一年后,你收获了哪些东西?
  4. 前端浏览器兼容问题总结
  5. 晶体管的高频等效模型(模电4.2小节)
  6. 鸿蒙系统基于安卓是什么意思,华为鸿蒙系统基于安卓还是Linux呢?
  7. JavaScript中的call,apply,bind区别及应用(包含手写call/apply/bind)
  8. Windows 无法使用139端口访问共享
  9. (串口通信编程) 开源串口调试助手Common (Com Monitor)
  10. FFmpeg源码分析:av_read_frame()读取音视频帧