Druid数据库配置详细介绍。网上一团糟。

JSON 2016-08-22 18:15:30 32052

最近公司用的 Mysql  数据库,因为有很多项目使用,偶尔 Mysql  扛不住了,发现有很多没有释放的链接。

查了各种原因。总结下。

业务代码方面:

  1. SQL  有大量的select * from table
  2. 有查询单表业务和多表关联查询共用sql语句。
  3. 有业务查询 SQL  可以批量操作,然后用的循环单条去执行。
  4. 。。。。N多看不过去的业务处理。有的问题看就痛心。

数据库方面:

  1. 各种数据库表超大。没有分表等处理措施,导致查询过慢,整体查询性能降低。
  2. 读写分离没有做。
  3. N多系统共用一套 mysql 
  4. 复杂业务查询,大数据异步业务处理绑定到业务数据库上,拖慢性能。
  5. 。。。。

连接池配置方面:

这个我要说道说道,如果你从网上,不管是百度,还是其他的,甚至Google ( 当然一部分同学用不了 )。都很难找到比较全,或者有详细说明的。不是说没有,是很难。

我用的是阿里巴巴的 Druid 

原来的配置。

#系统各种DB、缓存配置
#bendi----------
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.0.37:3306/project_demo?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=xxxx
jdbc.validationQuery=SELECT 'x'
jdbc.initialSize=5
jdbc.maxActive=20
jdbc.maxIdle=20
jdbc.minIdle=0
jdbc.maxWait=60000
jdbc.testOnBorrow=false
jdbc.testOnReturn=false
jdbc.testWhileIdle=true

jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=25200000
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=1800
jdbc.logAbandoned=true



#redis
redis.ip=192.168.0.28
redis.host=6379
redis.maxActive=200
redis.maxIdle=100
redis.minIdle=5
redis.maxWait=5000
redis.testOnBorrow=true
redis.testOnReturn=true


#es
es.ip=192.168.0.37
es.tcp.port=9301
es.http.port=9201
es.domain=http://manager.vinux.com
#集群名称要和安装保持一致,否则控制台不断打印日志
es.cluster.name=manager
#admin
es.shield.user=manager:manager
#power_user
#es.shield.user=tong:tongchuanwei

#mq
mq.ip=192.168.0.37
mq.name=tong
mq.pswd=tong
mq.scope=/

mq.next.ip=192.168.0.37
mq.next.name=tong
mq.next.pswd=tong
mq.next.scope=/

请同学只看JDBC部分。

大家不知道看没看出来问题。。

jdbc.minEvictableIdleTimeMillis=25200000

这个有很大问题。25200000/1000/60/60 = 7个小时。

啊哦。我不知道这个配置的来源。。。但绝B这有问题。

这是我调整后的JDBC数据源配置,带注释的。

#Driver
jdbc.driverClassName=com.mysql.jdbc.Driver
#数据库链接,
jdbc.url=jdbc:mysql://192.168.0.37:3306/project_demo?useUnicode=true&characterEncoding=UTF-8
#帐号
jdbc.username=root
#密码
jdbc.password=xxxx
#检测数据库链接是否有效,必须配置
jdbc.validationQuery=SELECT 'x'
#初始连接数
jdbc.initialSize=3
#最大连接池数量
jdbc.maxActive=10
#去掉,配置文件对应去掉
#jdbc.maxIdle=20
#配置0,当线程池数量不足,自动补充。
jdbc.minIdle=0
#获取链接超时时间为1分钟,单位为毫秒。
jdbc.maxWait=60000
#获取链接的时候,不校验是否可用,开启会有损性能。
jdbc.testOnBorrow=false
#归还链接到连接池的时候校验链接是否可用。
jdbc.testOnReturn=false
#此项配置为true即可,不影响性能,并且保证安全性。意义为:申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
jdbc.testWhileIdle=true
#1.Destroy线程会检测连接的间隔时间
#2.testWhileIdle的判断依据
jdbc.timeBetweenEvictionRunsMillis=60000
#一个链接生存的时间(之前的值:25200000,这个时间有点BT,这个结果不知道是怎么来的,换算后的结果是:25200000/1000/60/60 = 7个小时)
jdbc.minEvictableIdleTimeMillis=300000
#链接使用超过时间限制是否回收
jdbc.removeAbandoned=true
#超过时间限制时间(单位秒),目前为5分钟,如果有业务处理时间超过5分钟,可以适当调整。
jdbc.removeAbandonedTimeout=300
#链接回收的时候控制台打印信息,测试环境可以加上true,线上环境false。会影响性能。
jdbc.logAbandoned=false


这周做整体配置更新处理。以观后效。

常用数据库validationQuery检查语句

 数据库 validationQuery
 Oracle select 1 from dual
 mysql select 1
 DB2 select 1 from sysibm.sysdummy1
 microsoft sql select 1
 hsqldb select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
 postgresql select version()
 ingres select 1
 derby select 1
 H2 select 1

#ps 也可以自己定义一个表数据较少,简单的查询也可以。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/47.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Spring JPA查询,JPA 根据方法名字查询详细介绍
Ehcache配置详细解释
解JavaScript中splice()方法,有Demo详细介绍
Springboot + Mybatis,数据库数据配置项目Demo【源码下载】
如何解析JSON数据(详细解答)
Shiro教程,Shiro 配置文件详细解释,Shiro自定义Filter配置
JSON数据格式,JSON格式化介绍,JSON格式介绍
PostgreSQL:数据库角色
PostgreSQL:数据库角色
Linux 安装 Redis 详细步骤讲解
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...