SpringBoot内置tomcat调优测试优化
作者:蜗牛乌龟一起走 发布时间:2023-04-09 03:01:59
标签:SpringBoot,内置,tomcat,调优
问题
怎么配置springBoot 内置tomcat,才能使得自己的服务效率更高呢?
基础配置
Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。 这个不同SpringBoot 版本可能有所细微差别。本文测试基于Springboot 2.0.7.RELEASE
默认配置
/**
* Maximum amount of worker threads.
*/
private int maxThreads = 200;
/**
* Minimum amount of worker threads.
*/
private int minSpareThreads = 10;
/**
* Maximum size in bytes of the HTTP post content.
*/
private int maxHttpPostSize = 2097152;
/**
* Maximum size in bytes of the HTTP message header.
*/
private int maxHttpHeaderSize = 0;
/**
* Whether requests to the context root should be redirected by appending a / to
* the path.
*/
private Boolean redirectContextRoot = true;
/**
* Whether HTTP 1.1 and later location headers generated by a call to sendRedirect
* will use relative or absolute redirects.
*/
private Boolean useRelativeRedirects;
/**
* Character encoding to use to decode the URI.
*/
private Charset uriEncoding = StandardCharsets.UTF_8;
/**
* Maximum number of connections that the server accepts and processes at any
* given time. Once the limit has been reached, the operating system may still
* accept connections based on the "acceptCount" property.
*/
private int maxConnections = 10000;
/**
* Maximum queue length for incoming connection requests when all possible request
* processing threads are in use.
*/
private int acceptCount = 100;
测试步骤
通过我们查看源码得知了(org.springframework.boot.autoconfigure.web.ServerProperties)springBoot 内置tomcat 默认配置,现在我们为了在本地体现出效果,我们将配置参数有意调小配置如下进行压测,同时将压测接口中设置sleep(2000) 模拟线程没有释放。
tomcat:
#最小线程数
min-spare-threads: 5
#最大线程数
max-threads: 5
#最大链接数
max-connections: 5
#最大等待队列长度
accept-count: 1
该配置对应压测
通过压测100并发 发现异常达到了85% 由于我们配置ReadTimeout 和ConnectTimeout 配置2秒 100个线程同时达到,处理最大线程才1,排队也是1 导致一个是没有线程处理请求导致超时一个是排不上队别拒绝。当我按照本机cup 合理配置后看看压测情况。优化配置如下:
tomcat:
#最小线程数
min-spare-threads: 100
#最大线程数
max-threads: 600
#最大链接数
max-connections: 10000
#最大等待队列长度
accept-count: 1000
如上图 同样是100并发 异常率为0 全部通过,响应时间也是减除sleep(2000) 大多数都是10毫秒内。优化效果可见显著。
来源:https://blog.csdn.net/qq_29897369/article/details/112434900


猜你喜欢
- 前言本篇我们就来讲讲Fragment管理中的 Add() 方法Add()在我们动态的添加、管理Fragment中,Add属于最基础的方法了;
- 本文实例讲述了C#实现读写ini文件类。分享给大家供大家参考。具体如下:这个C#类封装了对INI配置文件进行操作所需的各种函数,包括读取键值
- Spring Security 基本介绍这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档我就只说下Sprin
- 前言我们之前学的单链表,默认只能从链表的头部遍历到链表的尾部,在实际中应用太少见,太局限;而双向链表,对于该链表中的任意节点,既可以通过该节
- 在了解HTTP断点续传的原理之前,让我们先来了解一下HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种。请求协议是由客
- boot-admin整合Quartz实现动态管理定时任务淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉、烤串、小饼和蘸料,音乐响起,
- 一、引言在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文
- public class Count { public static void main(String[] args) { int i =
- Redisson是架设在redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数
- 本文实例为大家分享了Java实现简易计算器的具体代码,供大家参考,具体内容如下程序的运行环境为Windows10 ,编译环境为IDEA。计算
- 由于项目没有设计返回键,一旦进入别的应用,就无法回到桌面。只能通过串口输入input keyevent 4(返回键)来返回桌面,为了方便调试
- 1. 自动化装配介绍Spring Boot针对mvc做了大量封装,简化开发者的使用,内部是如何管理资源配置,Bean配置,环境变量配置以及启
- 前言默认删除文件的时候 File.Delete 是将文件永久删除,如果是一些文档,建议删除到回收站,这样用户可以自己还原 通过 SHFile
- 实践过程效果代码public partial class Form1 : Form {
- MyBatis @MapKey的妙用背景在实际开发中,有一些场景需要我们返回主键或者唯一键为Key、Entity为Value的Map集合,如
- 1、装箱和拆箱是一个抽象的概念 2、装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型利用装箱和拆箱功能,可通过允许值类型的任何值
- 本文实例为大家分享了Unity实现俄罗斯方块第一部分,供大家参考,具体内容如下准备工作1、新建一个2D项目,新建成功以后设置相机的一些参数2
- 1、在Hierarchy面板右键UI>Button2、创建一个空物体3、创建一个脚本 ButtonClick.cs,定义一个Click
- 本文介绍在使用C#开发WinForm程序时,如何使用自定义的XML配置文件。虽然也可以使用app.config,但命名方面很别扭。我们在使用
- 这篇文章主要介绍了spring强行注入和引用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友