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

soゝso 2016-08-22 18:15:30 6723
分享到:

最近公司用的 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 也可以自己定义一个表数据较少,简单的查询也可以。


关于作者
目前就职于国内某电商平台公司打杂。。
相关文章
Ehcache配置详细解释
解JavaScript中splice()方法,有Demo详细介绍
Shiro教程,Shiro 配置文件详细解释,Shiro自定义Filter配置
MySQL数据库为用户设密码,Mysql修改密码。Mysql忘记密码解决方法
JSON数据格式,JSON格式化介绍,JSON格式介绍
基于Centos7以上的JAVA相关配置
HttpClient 获取详细的头信息
BlockingQueue 方法详细描述
MySQL数据库表怎么锁定
Maven的Mirror和Repository 的详细讲解
最新文章
jQuery Jsonp 请求,捕获异常(404,50X)状态异常 24
Springboot HTTP请求,Springboot HTTP 请求 Demo。Get/Post 149
微信自动关注公众号 JavaScript 脚本,批量关注公众号脚本 361
SOJSON 使用又拍云 CDN 整体架构,解决百度 SEO 方案 116
又拍云(Upyun)刷新CDN,云存储缓存 —JavaAPI 65
JS解密,JavaScript 解密,任何JS加密都能100%解密,以及JS 加密讲解 378
阿里云DNS 解析讲解,SEO配置搜索引擎线路解析 113
百度秒收录教程,怎么做到百度秒收入你的页面,SEO 教程 227
CDN 请求返回 connection reset by peer,被拦截请求解决方案 77
Google AdSense 申请技巧,谷歌广告申请通不过教程 197
最热文章
Elasticsearch教程(四) elasticsearch head 插件安装和使用 111605
Elasticsearch教程(六) elasticsearch Client创建 73984
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 71202
Elasticsearch教程(二),IK分词器安装 68285
Elasticsearch教程(三),IK分词器安装 (极速版) 54360
Elasticsearch教程(一),全程直播(小白级别) 53421
Elasticsearch教程(五) elasticsearch Mapping的创建 52767
Elasticsearch教程(七) elasticsearch Insert 插入数据(Java) 48595
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 44385
Elasticsearch权威指南-中文.pdf,Elasticsearch 中文文档下载 41717

骚码加入我们 / 千人QQ群:259217951

入群需要5元,如果没有QQ钱包,可以先Alipay、微信,赞助然后加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

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

正在加载... ...