druid连接池获取连接出现Connect reset by peer,connect lapse 0 ms.,Authentication lapse 0 ms.

1.环境

数据库连接池:druid连接池

开发语言:java

中间件:weblogic 12c

2.问题

    功能描述:一个监听用于消费消息队列的数据,然后通过Spring的定时任务进行加工处理获取的消息数据。

     检查系统发现数据没有加工,登录服务器,执行实时跟踪日志tail -33f nohup.out ,发现只有消费数据的日志,没有加工数据的日志输出。

3.排查

   3.1 打印堆栈信息

      ps -ef | grep java

      jstack -l pid > jstack.log

   发现线程阻塞在druidDataSource.getConnection(),连接池存在获取连接阻塞。

   3.2 检查服务器到数据库连通性

    telnet ip  1521

   策略没发现问题。

    3.3 检查连接池配置项

      使用的是druid连接池,配置最小2个,最大30个,未加上连接超时时间,加上maxWait超时时间,重启服务,运行一段时间后发现会出现连接超时所设置的时间。

    3.4 怀疑是连接池中保持的连接不可用

加上以下参数

timeBetweenEvictionRunsMillis: 验证连接空闲多久后进行剔除。

minEvictableIdleTimeMillis: 连接在池中空闲的最小时间后进行剔除

    运行一段时间后发现会出现连接超时所设置的时间,与连接池连接无关。

     3.5 测试获取数据库连接,怀疑是网络不稳定

        登录weblogic控制台创建连接池,测试连接,不断的点击验证连接。

        

会出现个别连接重置

 使用ssh -v -p port  ip

也是进行多次验证测试,

 正常的应该是有字样Connection established,而最后是Connection  closed by remote host,

 异常的最后输出是Connection  reset by peer

 3.6 寻找网络的同事排查

    最终在网络同事的配合下定位到源端到目标端访问存在防火墙配置问题,加上防火墙策略后,验证不再出现该问题。

4.解决复盘

   先打印出堆栈信息分析定位问题,检查连接池配置参数,再排查网络策略连通性,再验证测试获取连接是否正常。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏supper

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值