springboot 压测 50并发 线程等待_Spring Boot中三款内嵌容器的使用
做Spring Boot的盆友应该都知道,Spring Boot支持三种内嵌容器,有了这几个容器,我们就不需要打成War包再去部署,而是直接执行java -jar jar包即可启动,真是太方便了。
Tomcat
在我们使用Spring Boot开发WebApi时,会引入spring-boot-starter-web这个starter组件,其自带了Tomcat容器,
所以我们平时新建项目启动起来,会看见Tomcat相关的一些信息。
tomcat常用参数:
- server.tomcat.uri-encoding:Tomcat 请求编码
- server.tomcat.threads.max:Tomcat 的最大线程数
- server.tomcat.basedir:Tomcat 运行日志和临时文件的目录。若不配置,则默认使用系统的临时目录。
- server.tomcat.max-connections: 最大连接数
- server.tomcat.accept-count: 超过该请求数则排队
- server.tomcat.threads.min-spare: 最小工作空闲线程数
- server.tomcat.max-http-form-post-size: Post数据大小
当然,还有很多其他的参数,有需要的可以了解一下
Jetty
因为spring-boot-starter-web自带了Tomcat,所以我们要使用其它的容器的话,需要将其依赖包排除掉并重新引入新容器的starter
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty 2.3.3.RELEASE
我们还需要去掉原有的Tomcat配置,然后启动
常用参数:
- server.jetty.threads.max: 最大线程数
- server.jetty.threads.min: 最小线程数
- server.jetty.threads.max-queue-capacity: 最大队列容量
- server.jetty.threads.idle-timeout: 线程最大空闲时间
Undertow
使用Undertow的方式跟Jetty的使用方式一样,需要先排除掉默认依赖,再引入Undertow Starter
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow 2.3.3.RELEASE
去掉其他容器的配置,启动我们的程序,就可以看到Undertow的相关信息
常用参数:
- server.undertow.url-charset: 请求编码
- server.undertow.threads.io: IO线程
- server.undertow.threads.worker: 工作线程
听网友说这三个的性能是这样排名的:Undertow>Jetty>Tomcat,但是我没亲自去压测过,所以不确定其真假。这三个,只有Tomcat用的最多,Undertow也用过几次,但是项目没什么并发可言,在性能上,也没有去实际对比过,后面有机会涉及到性能优化的时候再来深究吧。
各位盆友,你们是用的哪个容器呢?
springboot 压测 50并发 线程等待_Spring Boot中三款内嵌容器的使用相关推荐
- springboot 压测 50并发 线程等待_线程池+CountDownLatch——高并发就是这么简单
今天和大家分享的是:在开发服务端API时候,如何合理的运用线程池+CountDownLatch来保证API的高并发访问. 首先,作为Java开发的同学来说,java.util.concurrent并发 ...
- springboot @datetimeformat 标注在参数上无效_Spring Boot 中必须掌握的 45 个注解
点关注,不迷路:持续更新Java架构相关技术及资讯热文!!! 一.SpringBoot/spring @SpringBootApplication: 包含@Configuration.@EnableA ...
- springboot 线程池_Spring boot 2 线程池怎么配置
线程池 在java 中线程池,就是ThreadPoolExecutor来构造,简单看下线程池包含的方法, corePoolSize:初始化线程.线程池中保留的线程数量. maximumPoolSize ...
- SpringBoot 内嵌容器
SpringBoot内置了三种servlet容器,默认的是tomcat,这三种servlet容器 tomcat,jetty 和 undertow,都被springboot集成了. SpringBoot ...
- python接口压测1000并发_测试工具:黑羽压测
前言 很多朋友对性能测试有种深深的误解:认为 只要学会 使用一款 性能测试工具,点点界面,配配数据,就能做好性能测试了. 不是这样的!! 性能测试 通常 要真正做好 很不容易. 它需要测试人员: 有产 ...
- 全链路压测平台(Quake)在美团中的实践
背景 在美团的价值观中,"以客户为中心"被放在一个非常重要的位置,所以我们对服务出现故障越来越不能容忍.特别是目前公司业务正在高速增长阶段,每一次故障对公司来说都是一笔非常不小的损 ...
- springboot jar服务器运行后无法请求_Spring Boot微服务中Chaos Monkey的应用
有多少人从未在生产环境中遇到系统崩溃或故障?当然,你们每个人迟早都会经历它.如果我们无法避免失败,那么解决方案似乎是将我们的系统维持在永久性故障状态.Chaos Monkey - 这个概念是Netfl ...
- springboot事务回滚源码_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
- springboot 事务手动回滚_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
最新文章
- 其实你做的大部分工作都是浪费
- carbon abatement
- redis 双写一致性 看一篇成高手系列 一
- spring aop示例_Spring Profile模式示例
- c语言 spawn函数,我在electron程序中spawn了一个C语言程序作为子进程,我该如何与这个子进程通信?...
- 论文浅尝 | LightRNN:存储和计算高效的 RNN
- Android推荐的几本书
- mysql 回表 覆盖索引_mysql 14 覆盖索引+回表
- iPhone8带来AR新技术,AR游戏要火了吗?
- robots笔记以免忘记
- Fortran入门教程(五)——选择结构
- 完美解决Mac软件意外退出的方法(软件签名)
- iOS 蓝牙开发用到的一些格式转换
- android电视文件管理器,2018电视文件管理器排行榜(最新)
- 语音和噪声相关数据集(持续更新)
- macos 如何优美地打开知网caj文件 - macos 如何打开caj文件
- UVM设计模式 (三) 静态类、资源管理、uvm_event、uvm_*_pool、uvm_config_db、UVM_REGEX_NO_DPI
- 论文阅读:Generating Talking Face Landmarks from Speech
- 账号被盗,如何强制下线?
- C++数字图像处理篇之图像加马赛克
热门文章
- redis插件连接集群 shiro_Shiro经过Redis管理会话实现集群(转载)
- php 图片印章_PHP实现中文圆形印章特效_PHP
- PYG教程【三】对Cora数据集进行半监督节点分类
- java高并发(四)并发编程与线程安全
- 35岁程序员大厂Offer接到手软,靠的竟然是...
- 更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对比!
- java中浮点数的表示_java 浮点数表示法
- 基坑计算理论m法弹性支点法_人工冲孔轻型井点在基坑降水工程中的应用
- linux中查看用户组标识符,Linux用户和组管理
- c语言按F1键运行,C语言的编译和运行按什么键