druid连接池RemoveAbandanded导致的性能问题

DB driuid连接池 removeAbandanded 配置导致CPU使用率飙高

单机压测发现请求QPS不高也很吃CPU,通过观察火焰图和热点代码发现是获取DB连接池的问题。

DB连接池底层使用了driuid,并且将removeAbandanded默认配置为true。

com.alibaba.druid.pool.DruidDataSource#getConnectionDirect中有一段逻辑

if (removeAbandoned) {
                StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
                poolableConnection.connectStackTrace = stackTrace;
                poolableConnection.setConnectedTimeNano();
                poolableConnection.traceEnable = true;

                activeConnectionLock.lock();
                try {
                    activeConnections.put(poolableConnection, PRESENT);
                } finally {
                    activeConnectionLock.unlock();
                }
            }

Thread.currentThread().getStackTrace();这一行代码比较吃CPU。

具体请参考 连接泄漏监测,该参数在线上不应该不配置为true,因为虽然MySQL有连接8小时空闲就断开的feature,但是线上只要连接池配置的合理,一般不会出现此问题。据他人测试,设置该参数为false,获取连接的性能可以提高10倍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值