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
根据您提供的信息,Druid 数据库连接池在连接 MySQL 数据库时一直无法加载 MysqlConnection,导致 CPU 占用率 100%。
可能的原因如下:
数据库连接配置错误:在使用 Druid 数据库连接池时,需要正确配置数据库连接信息,包括数据库 URL、用户名、密码等。如果配置不正确,可能会导致连接失败或连接超时等问题。建议检查数据库连接配置是否正确,并确保数据库服务正常运行。
数据库驱动版本不兼容:Druid 数据库连接池需要与 MySQL 数据库驱动版本兼容,否则可能会导致连接失败或连接超时等问题。建议检查您使用的 MySQL 数据库驱动版本是否与 Druid 数据库连接池兼容,并尝试升级或降级 MySQL 数据库驱动版本。
连接池配置不合理:在使用 Druid 数据库连接池时,需要合理配置连接池参数,例如最大连接数、最小连接数、连接超时时间等。如果连接池参数配置不合理,可能会导致连接池无法正常工作或出现连接超时等问题。建议检查连接池配置是否合理,并根据实际情况进行调整。
网络或服务器问题:在一些情况下,网络或服务器问题可能会导致数据库连接出现问题,例如网络延迟、服务器负载过高等。建议检查网络和服务器状态,并进行必要的调整和优化。
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占用高的问题。
看起来你的项目使用了Druid连接池,并且在运行时调用了com.alibaba.druid.util.MySqlUtils#getLastPacketReceivedTimeMs
方法。然而,你使用的JDBC驱动版本为6.0.3,该版本中已经改变了MySQL连接类的路径。
在6.0.3版本中,com.mysql.jdbc.MySQLConnection
和com.mysql.cj.MysqlConnection
这两个类的路径已经被更改为com.mysql.cj.api.MysqlConnection
,因此导致每次加载这两个类失败,最终导致CPU占用100%。
为了解决这个问题,你可以尝试以下几种方法:
更新Druid版本:检查Druid的最新版本,确保它与你所用的JDBC驱动版本兼容。更新Druid版本可能会解决这个问题。
更新JDBC驱动:如果你的项目可以支持更高版本的JDBC驱动,则尝试升级到一个能够与你当前使用的Druid版本兼容的JDBC驱动版本。此操作可能需要对代码进行修改以适应新的API和特性。
自定义配置:如果无法更新Druid或JDBC驱动版本,你可以考虑自定义Druid的配置文件。在配置文件中,你可以指定正确的数据库连接类路径,使Druid能够正常加载该类,并避免CPU占用100%的问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。