郑州网站建设技术精粹,ftp 网站文件,制定网站推广方案,网店设计与装修客户端参数
原文地址
# 连接池配置
# 初始化连接数
spring.datasource.druid.initial-size1
# 最小空闲连接数#xff0c;一般设置和initial-size一致
spring.datasource.druid.min-idle1
# 最大活动连接数#xff0c;一个数据库能够支撑最大的连接数是多少呢#xff1f;
…客户端参数
原文地址
# 连接池配置
# 初始化连接数
spring.datasource.druid.initial-size1
# 最小空闲连接数一般设置和initial-size一致
spring.datasource.druid.min-idle1
# 最大活动连接数一个数据库能够支撑最大的连接数是多少呢
spring.datasource.druid.max-active20
# 从连接池获取连接超时时间
spring.datasource.druid.max-wait60000
# 配置间隔多久启动一次销毁线程对连接池内的空闲的connection进行检测单位是毫秒。
# 1.如果连接空闲并且超过minIdle以外的连接如果空闲时间超过
minEvictableIdleTimeMillis设置的连接物理关闭。
# 2.在minIdle以内的不处理。
spring.datasource.druid.time-between-eviction-runs-millis60000
# 配置一个连接在池中连接最小可清理的空闲时间单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis300000
# 打开后增强timeBetweenEvictionRunsMillis的周期性连接检查minIdle内的空闲连接
# 设置从连接池获取连接时是否检查连接有效性true时每次都检查;false时不检查
spring.datasource.druid.test-on-borrowfalse
# 设置往连接池归还连接时是否检查连接有效性true时每次都检查;false时不检查
spring.datasource.druid.test-on-returnfalse
# 设置从连接池获取连接时是否检查连接有效性
# 为true时如果连接空闲时间超过minEvictableIdleTimeMillis进行检查否则不检查
# 为false时不检查
spring.datasource.druid.test-while-idletrue
# 检验连接是否有效的查询语句
# 如果数据库Driver支持ping()方法则优先使用ping()方法进行检查否则使用
# validationQuery查询进行检查,用于检测sql语句是否可以正常执行
spring.datasource.druid.validation-queryselect 1 from dual
# 每次检查强制验证连接有效性
spring.datasource.druid.keep-alivetrue数据库连接池化的思想也就是提前将连接创建好并保存用的时候直接拿来用同时要进行管理也就有了上面这些相关的参数如果不适用池化的思想数据库会有一个最大的连接数如果超过这个最大连接数数据库直接无法处客户端的查询请求。可以通过下面这个命令来查看
SHOW VARIABLES LIKE max_connections;我们可以看到默认值为151 那我们接下来做个实验 可以看到一旦达到最大连接数就会报错异常比例是相当高的但是使用连接池就不会有这种大量报错的现象。
除了使用连接池我们对一些参数也可以做一些优化
spring.datasource.druid.initial-size1
# 最小空闲连接数一般设置和initial-size一致
spring.datasource.druid.min-idle1
# 最大活动连接数
spring.datasource.druid.max-active20这个参数是管理连接池数量的和线程池的思想一样spring.datasource.druid.min-idle这个相当于核心线程数无论怎样连接池始终保持这么多的连接数量。spring.datasource.druid.max-active20这个是最大线程数如果超过这个线程数会等待前面的处理完才能拿到连接。这个参数的值不是越大越好真实业务可能需要压测得出一个合理值。
spring.datasource.druid.max-wait60000这个参数指定了一个连接等待的最大时间如果超过这个时间可以直接失败以免造成阻塞越来越多的请求阻塞在服务端使得服务端压力更大吞吐量进一步下降乃至发生宕机。
jdbc:mysql:/ip:3306/hero_all?serverTimezoneUTCcharacterEncodingutf-8connectionTimeout3000socketTimeout1200connectTimeout表示等待和MySQL数据库建立socket链接的超时时间。如果与服务器(这里指数据库)请求建立连接的时间超过ConnectionTimeOut就会抛连接超时异常即服务器连接超时。socketTimeout表示客户端和MySQL数据库建立socket后读写socket时的等待的超时时间。如果与服务器连接成功就开始数据传输了。如果服务器处理数据等待用时过长超过了SocketTimeOut就会抛出SocketTimeOutExceptin即服务器响应超时服务器没有在规定的时间内返回给客户端数据。
总结在客户端连接端能做的优化也就是合理的配置连接池的参数及优化等待时间