由于SpringBoot内置WEB容器是Tomcat,所以我们在使用springboot时,如果内置Tomcat参数不满足要求时,可按需优化。 SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数
由于SpringBoot内置WEB容器是Tomcat,所以我们在使用springboot时,如果内置Tomcat参数不满足要求时,可按需优化。
SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,也就是说 支持最大并发量是一万(默认)。
Tomcat有两种处理连接的模式,
1,是Bio,一个线程只处理一个Socket连接,
2,是NIO,一个线程处理多个Socket连接。
由于Http请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。一个线程处理多个连接数会很慢 有可能会超时。
springboot 配置Tomcat参数:
server: tomcat: accept-count: 80 #挂起的请求队列最大连接数,默认100 max-connections: 2000 #最大连接数,默认10000,tomcat内tcp连接池的大小 max-threads: 200 #最大线程数,默认200,超过加入等待队列,默认是100,当等待队列达到100后,直接拒绝此次请求返回connection refused。连接超时时间默认为20秒 min-spare-threads: 5 #最小工作线程数 connection-timeout: 60000 #server端的socket超时间,默认60s accesslog: enabled: true #启动tomcat访问日志
静态内部类Accesslog:主要用于配置Tomcat访问日志的参数信息:
enabled:是否启用访问日志
pattern:访问日志的格式化模式,默认为common
directory:创建日志文件的目录。可以是绝对或相对于Tomcat的基目录,默认是logs
prefix:日志文件名称前缀,默认access_log
suffix:日志文件名称后缀,默认.log
rotate:是否启用访问日志旋转,默认为true
renameOnRotate:是否推迟将日期戳包含在文件名中
fileDateFormat:日志文件名称中的日期格式,默认为.yyyy-MM-dd。
requestAttributesEnabled:为请求使用的IP地址、主机名、协议和端口设置请求属性
buffered:是否缓冲输出,使其只定期刷新,默认为true
优化完内置Tomcat配置,我们可以按需再优化下数据库连接配置:
查询Mysql最大连接数:
show variables like "%max_connections%";
mysql 最大连接数的默认值是 100,这个数值对于并发连接很多的数据库应用是远不够用的。当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些。在使用 Mysql 数据库的时候,经常会遇到一个问题,就是 “Can not connect to MySQL Server. Too many connections” -mysql 1040 错误,这是因为访问 MySQL 且还未释放的连接数已经达到 MySQL 的上限。通常,MySQL 的最大连接数默认是 100,,最大可以达到 16384。
常用的修改MySQL最大连接数的两种方式如下:
第一种:命令行修改最大连接数 (max_connections),设置最大连接数为 1000。
set global max_connections = 1000;
这种方式有个问题,就是设置的最大连接数只在 MySQL 当前服务进程有效,一旦 MySQL 重启,又会恢复到初始状态。因为 MySQL 启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。
第二种:通过修改配置文件来修改 MySQL 最大连接数 (max_connections)。
进入 MySQL 安装目录,打开 MySQL 配置文件 my.ini 或 my.cnf 查找 max_connections=100,修改为 max_connections=1000,重启 MySQL 服务即可。
mybatis 的并发上限优化:
spring.datasource.name=druidDataSourcespring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.druid.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://192.168.1.1:13306/test?useUnicode=true&characterEncoding=utf8&useTimezone=true&serverTimezone=GMT%2B8spring.datasource.username=rootspring.datasource.passWord=123456testspring.datasource.filters=stat,wall,log4j,configspring.datasource.max-active=100spring.datasource.initial-size=1spring.datasource.max-wait= 60000spring.datasource.min-idle=1spring.datasource.time-between-eviction-runs-millis=60000spring.datasource.min-evictable-idle-time-millis=300000spring.datasource.validation-query=select 'x'spring.datasource.test-while-idle=truespring.datasource.test-on-borrow=falsespring.datasource.test-on-return=falsespring.datasource.pool-prepared-statements=truespring.datasource.max-open-prepared-statements=50spring.datasource.max-pool-prepared-statement-per-connection-size=20
来源地址:https://blog.csdn.net/qq_35113072/article/details/128626464
--结束END--
本文标题: SpringBoot优化连接数
本文链接: https://lsjlt.com/news/372615.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0