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

soゝso 2016-08-22 18:15:30 10888

最近公司用的 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

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

本文主题:

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

相关文章
Druid数据库配置详细介绍网上一团糟
Ehcache配置详细解释
解JavaScript中splice()方法,有Demo详细介绍
Shiro教程,Shiro 配置文件详细解释,Shiro自定义Filter配置
MySQL数据库为用户设密码,Mysql修改密码。Mysql忘记密码解决方法
基于Centos7以上的JAVA相关配置
HttpClient 获取详细的头信息
BlockingQueue 方法详细描述
JSON数据格式,JSON格式化介绍,JSON格式介绍
MySQL数据库表怎么锁定
最新文章
阿里云和腾讯云哪个好? 87
2019年9月16日新浪短链API已经恢复使用,新浪短链服务官方已经宣布停用。本站已经攻克 1362
2019年 中秋节、国庆节放假通知来了,拼假攻略 182
记一次小失误导致的大事件,Mysql SQL Error: 0, SQLState: null 排查过程 318
Springboot Maven 增加本地依赖包,Springboot Maven打包本地包 174
Java 获取图片属性、获取图片EXIF属性操作方法[metadata-extractor] 87
又拍云(Upyun)CDN、云存储刷新链接缓存,API实例讲解 123
Linux Centos 使用 Redis service 启动,Redis service 脚本编写 181
恭喜SOJSON获得阿里云618“上云接力赛”第一名,获得代金券6.18万 434
Springboot 集成Freemarker 自定义标签解决方案 1263
最热文章
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 184088
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 162610
Elasticsearch教程(四) elasticsearch head 插件安装和使用 142587
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 100779
Elasticsearch教程(六) elasticsearch Client创建 83033
Elasticsearch教程(一),全程直播(小白级别) 80464
Elasticsearch教程(二),IK分词器安装 78365
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 77560
Elasticsearch教程(五) elasticsearch Mapping的创建 71931
免费天气API,天气JSON API,不限次数获取十五天的天气预报 71862

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

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

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

支付扫码

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

正在加载... ...