TongWeb生产环境配置规范之二:数据源配置

一、数据库驱动包选择

  1. 数据库驱动包由数据库厂商提供,另外若应用采用hibernate等持久框架,还需要国产数据库提供方言类包,如: 达梦的DmDialect-for-hibernate3.0.jar。
  2. 确认数据库版本对应的数据库驱动包的版本。
  3. 确认数据库驱动包支持的JDK版本与JDBC规范,目前普遍支持JDK1.8及以上,支持JDBC4.0规范。

      错误的方式:从网上下载数据库驱动包直接用,不考虑版本兼容性。

二、数据库驱动包的存放

  1. 若应用采用自带开源数据源,则数据库驱动包放在应用或公共库类路径下。
  2. 若采用TongWeb数据源,则建议把数据库驱动包直接放在TongWeb的lib目录下,这样数据源与应用采用同一份驱动。
  3. 若存在一个TongWeb上配置多个同一类型数据库,但数据库版本不同、对应驱动包版本也不同的情况时,不能将所有驱动包放在TongWeb的lib下。 需要放置在其它目录下,在配置数据源时,指定对应的数据库驱动包。

三、数据源参数的配置

     1.  基础参数配置

参数说明

最小连接数

根据业务系统并发量设置

最大连接数

根据业务系统并发量设置

注意:不得超过数据库可用连接数,否则超出数据库限制。

创建连接时验证

建议开启项,以确保应用获取有效的数据库连接。

获取连接时验证 

归还连接时验证

验证方式

方式一:通过connection.isValid()方法验证(推荐方式)

方式二:通过SQL语句,需用最简单的SQL语句。

验证间隔 

连接验证不是应用每次获取连接都验证,而是有一定的时间间隔。

通常默认值即可,若网络或数据库不稳定导致的连接不稳定,建议把验证间隔设短。

空闲连接检查

建议开启项,当业务不忙时,连接池中空闲的连接数大于连接池的最小连接数时,可以释放连接,保持最小连接数,避免一直占用数据库连接。

URL参数/连接参数

不同数据库有不同的参数,通常在URL或连接参数中配置,如:connectiontimeout、sockettimeout、serverTimezone等等,具体由数据库驱动来设置。

  2.  SQL与连接泄露场景

        若应用系统在运行一段时间后,数据源连接占满,而长时间不释放,则可能存在连接泄露的问题,应用没有对连接进行关闭而又不能修复代码解决,这时需要配置以下参数。

参数说明

即时泄露回收

遇到泄露问题,无法修复应用代码时建议开启项,该功能是当http请求处理完成后回收连接。

但对于应用自启线程使用数据源连接情况,无法跟踪关闭连接。

泄露超时时间  

上线初期建议开启,超时时间设为60秒。 在超时时打出stack traces 日志,通过日志查找应用代码泄露的位置。

泄漏时记录日志 

泄露回收/关闭连接

若无法修复应用代码,则需要开启强制回收连接功能,需考虑业务最长SQL时间,使“泄露超时时间” 大于业务最长SQL时间再开启。以免中断正常的业务。

TongWeb8 增加一个“泄漏判定比例 ”  >80%再关闭连接。

语句跟踪/自动关闭语句 

当应用statement未关闭,造成游标泄露时,建议开启该项。

跟踪语句堆栈

TongWeb8功能,打出stack traces 日志可以分析应用statement泄露位置。

    3.  慢SQL场景 

          监控有哪些慢SQL影响业务,可以针对性的对SQL进行优化。

参数说明

慢SQL检测时间  

上线初期建议开启, 设置慢SQL的检测时间,记录慢的SQL进行优化。

慢SQL日志

SQL超时

本质是设置statment的setQueryTimeout方法,若应用SQL长时间执行阻塞无法解决,可以设置此值中止SQL执行。

4. MySQL驱动兼容

     针对以mysql驱动为主的国产数据库,TongWeb7 需要开启“Mysql驱动兼容  ”选项。

具体原因见:关于TongWeb数据源兼容mysql驱动的注意事项-CSDN博客

5. SQL异常关闭连接

     TongWeb8.0 建议开启“SQL错误时回收”, 当SQL异常时,会回收当前连接。TongWeb7.0无此项,默认SQL异常时就会回收当前连接。

6. 线程关联

     若遇到一个请求处理线程需要同时占用多个数据源连接的场景,建议开启线程关联。这样在一次请求处理中,占用的是同一个数据源连接对象。

     若一次请求处理中涉及嵌套事务,事务提交的场景,则不能开启该功能。

常见错误的方式:

  • 上线初期容易出性能问题,未开启慢SQL日志,泄露日志。
  • 最大连接数配置过大,超过数据库允许的连接数。
  • 驱动包版本过老。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值