开发者社区 问答 正文

druid中的创建连接线程在网络IO位置每次都阻塞15秒,数据库使用的是rds

druid中的创建连接线程在网络IO位置每次都阻塞15秒,数据库使用的是rds,想知道那个超时参数配置在什么地方? 跟踪了druid源码只发现有个socketTimeout参数,而且我是使用的默认值0(永久阻塞) 数据库驱动包mysql-connector-java-5.1.22-bin.jar我也看过了没发现有那一块配置相关的默认值,数据库(rds)也没有相关参数能对上 如下:


看异常堆栈得出握手成功,在auth认证的时候失败,我们的业务服务器与数据库不在一个网段,并且 我们的业务服务器均未启用防火墙,
想请阿里的网络组的大神看看是不是交换机或路由器的防火墙设置某个参数造成的,多谢




异常堆栈信息


展开
收起
wikili 2017-05-31 11:34:16 4616 分享 版权
阿里云 AI 助理回答

根据您提供的问题描述和异常情况,您在使用Druid连接池时遇到创建连接线程在网络IO位置阻塞15秒的问题,尤其是在认证(auth认证)阶段失败。您已检查了Druid的socketTimeout参数,并确认其为默认值0,意味着该参数不会导致您遇到的超时现象。同时,您也查看了数据库驱动和RDS配置,未发现直接相关的超时设置。

结合您的场景,这里有几个可能的方向和建议进行排查:

  1. 检查网络环境与配置

    • 虽然您提到业务服务器未启用防火墙,但请确保路由器或交换机层面没有实施可能影响网络通信的策略或防火墙规则,特别是对于不同网段间的访问控制。
    • 确认网络路径上是否存在潜在的设备(如安全设备、代理服务器等),它们可能对特定端口或协议有额外的限制或超时设置。
  2. 深入分析异常堆栈

    • 您提到了握手成功但在认证时失败,这通常指向了更具体的问题所在。请详细审查异常堆栈信息,看是否能提供更多关于认证失败的具体原因,比如是认证请求未发送、响应未收到,还是认证协议错误等。
  3. 数据库连接字符串与认证方式

    • 重新审视数据库连接URL和认证参数,确认用户名、密码、数据库实例名等信息正确无误,且认证方式(如MySQL的mysql_native_password)与数据库配置匹配。
  4. 数据库服务端日志

    • 查看RDS服务端的日志,尤其是安全审计日志或错误日志,这些日志可能会记录下认证失败的具体原因,比如拒绝访问、凭证不正确或过期等。
  5. Druid其他相关配置

    • 尽管您已经检查了socketTimeout,但Druid还有其他与时间相关的配置项,例如connectTimeout(数据库驱动与数据库服务器建立TCP连接的超时时间)。请确认这些参数是否符合预期,或者尝试调整以排除网络延迟或不稳定导致的问题。
  6. 网络诊断工具

    • 使用网络诊断工具(如tcpdump或Wireshark)捕获业务服务器与RDS之间的网络流量,分析认证过程中的数据包交互,这有助于定位是在哪一步骤发生阻塞或失败。
  7. 咨询阿里云技术支持

    • 如果以上步骤未能解决问题,鉴于您的业务服务器与RDS不在同一网段,可能存在特定于阿里云网络配置的问题。建议联系阿里云的技术支持团队,提供详细的异常信息和网络拓扑结构,以便他们从基础设施层面协助排查。

综上所述,由于直接的超时配置似乎不是问题根源,需要从网络环境、认证细节、日志分析以及底层网络架构等多个角度综合排查。希望上述建议能帮助您找到问题所在并解决。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答