开发者社区> 问答> 正文

druid一直加载不到MysqlConnection,导致CPU 100%

druid版本:1.2.8 mysql-connector-java:6.0.3 OS: linux

我的项目每次运行,都会调用druid的com.alibaba.druid.util.MySqlUtils#getLastPacketReceivedTimeMs 方法,然而由于我用的JDBC驱动为6.0.3,找不到 "com.mysql.jdbc.MySQLConnection" "com.mysql.cj.MysqlConnection" 这两个类,导致每次类加载都失败,最终造成CPU 100% (6.0.3中类路径为:com.mysql.cj.api.MysqlConnection,带有api)

我专门写了一篇文章记录整个事件的排查过程: https://blog.csdn.net/csp_6666/article/details/128279538?spm=1001.2014.3001.5501

mysql mysql-connector-java 6.0.3 com.alibaba druid 1.2.8

原提问者GitHub用户BugCui

展开
收起
山海行 2023-07-05 17:50:14 173 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    根据您提供的信息,Druid 数据库连接池在连接 MySQL 数据库时一直无法加载 MysqlConnection,导致 CPU 占用率 100%。

    可能的原因如下:

    数据库连接配置错误:在使用 Druid 数据库连接池时,需要正确配置数据库连接信息,包括数据库 URL、用户名、密码等。如果配置不正确,可能会导致连接失败或连接超时等问题。建议检查数据库连接配置是否正确,并确保数据库服务正常运行。

    数据库驱动版本不兼容:Druid 数据库连接池需要与 MySQL 数据库驱动版本兼容,否则可能会导致连接失败或连接超时等问题。建议检查您使用的 MySQL 数据库驱动版本是否与 Druid 数据库连接池兼容,并尝试升级或降级 MySQL 数据库驱动版本。

    连接池配置不合理:在使用 Druid 数据库连接池时,需要合理配置连接池参数,例如最大连接数、最小连接数、连接超时时间等。如果连接池参数配置不合理,可能会导致连接池无法正常工作或出现连接超时等问题。建议检查连接池配置是否合理,并根据实际情况进行调整。

    网络或服务器问题:在一些情况下,网络或服务器问题可能会导致数据库连接出现问题,例如网络延迟、服务器负载过高等。建议检查网络和服务器状态,并进行必要的调整和优化。

    2023-07-30 21:19:40
    赞同 展开评论 打赏
  • Druid在内部使用了MySQL的驱动程序来与MySQL数据库进行交互,但在最新的MySQL Connector/J 6.x版本中,MySQL的驱动程序包结构发生了一些变化。因此,Druid在加载驱动程序类时无法找到旧版本的类。

    解决这个问题的方法是使用兼容新版MySQL Connector/J的驱动程序。您可以尝试升级到Druid的最新版本,以支持新版的MySQL Connector/J。

    如果您无法升级Druid版本,可以尝试更换旧版本的MySQL Connector/J,以与Druid兼容。在您的项目中,将MySQL Connector/J的版本降级到与Druid兼容的版本(例如5.x系列),这样可以避免类加载失败和CPU占用高的问题。

    2023-07-09 09:56:19
    赞同 展开评论 打赏
  • 升级下驱动吧,比如最新版本的8.0.31

    原回答者GitHub用户wenshao

    2023-07-06 10:38:07
    赞同 展开评论 打赏
  • 看起来你的项目使用了Druid连接池,并且在运行时调用了com.alibaba.druid.util.MySqlUtils#getLastPacketReceivedTimeMs方法。然而,你使用的JDBC驱动版本为6.0.3,该版本中已经改变了MySQL连接类的路径。

    在6.0.3版本中,com.mysql.jdbc.MySQLConnectioncom.mysql.cj.MysqlConnection这两个类的路径已经被更改为com.mysql.cj.api.MysqlConnection,因此导致每次加载这两个类失败,最终导致CPU占用100%。

    为了解决这个问题,你可以尝试以下几种方法:

    1. 更新Druid版本:检查Druid的最新版本,确保它与你所用的JDBC驱动版本兼容。更新Druid版本可能会解决这个问题。

    2. 更新JDBC驱动:如果你的项目可以支持更高版本的JDBC驱动,则尝试升级到一个能够与你当前使用的Druid版本兼容的JDBC驱动版本。此操作可能需要对代码进行修改以适应新的API和特性。

    3. 自定义配置:如果无法更新Druid或JDBC驱动版本,你可以考虑自定义Druid的配置文件。在配置文件中,你可以指定正确的数据库连接类路径,使Druid能够正常加载该类,并避免CPU占用100%的问题。

    2023-07-05 19:17:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RDS SQL Server CPU高使用率性能优化 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载