返回顶部
首页 > 资讯 > 数据库 >MySQL-JDBC驱动引起bug问题的示例
  • 733
分享到

MySQL-JDBC驱动引起bug问题的示例

2024-04-02 19:04:59 733人浏览 八月长安
摘要

这篇文章给大家分享的是有关Mysql-JDBC驱动引起bug问题的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题背景公司是做电商系统的,整个系统搭建在华为云上。系统设计的

这篇文章给大家分享的是有关Mysql-JDBC驱动引起bug问题的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

问题背景

公司是做电商系统的,整个系统搭建在华为云上。系统设计的时候,考虑到后续的用户和订单数量比较大,需要使用一些大数据库的组件。关系型数据库这块,考虑到后续数据量的快速增长,不是直接写入mysql,而是使用了华为云的分布式数据库中间件DDM使用了DDM之后,可以在业务不感知的情况下,直接增加Mysql读实例的个数,线性提升读性能。也支持中间件层面的分库分表,提供海量关系型数据库的操作。简直是为电商系统贴身定制的。

MySQL-JDBC驱动引起bug问题的示例DDM自身是以集群形式提供服务的,对业务开放的是多个连接IP地址。需要有一层负载均衡。如果使用传统的加LB的形式做负载均衡,会多一层中转,有性能损耗。所以,直接使用了MySQL-JDBC提供的客户端负载均衡能力。

逻辑结构如下图所示:

MySQL-JDBC驱动引起bug问题的示例

▲业务通过MySQL-JDBC的Loadbalance能提访问多个DDM节点。MySQL-JDBC提供负载均衡能力。

问题说明

MySQL JDBC驱动的客户端负载均衡能力,一直运行得好好,性能嗷嗷叫。可是前一阵子竟无故出现业务请求失败。我是负责电商订单模块的,涉及到真实的Money,这个问题可吓了宝宝一身冷汗……

于是赶紧查看了后台日志,发现是访问DDM出现了异常,二话不说直接提了工单给华为云DDM服务。

MySQL-JDBC驱动引起bug问题的示例

不得不说,华为云的服务还是很好的,不到半个小时就有专门的工作人员联系了我,还跟我一起排查问题。

将我们业务的日志取下来,和DDM的支撑人员一起分析,发现报错如下:根本原因竟然是MySQL驱动的bug,导致StackOverflow本地栈溢出导致……原来是一个Bug引发的血案,误会了DDM服务,真是抱歉了

MySQL-JDBC驱动引起bug问题的示例

MySQL-JDBC驱动引起bug问题的示例

从堆栈可以看出来,某个异常,触发了MySQL-JDBC的bug,导致循环调用,直至栈溢出。在华为DDM支撑人员的建议下,对驱动代码进行了反编译,从反编译的情况下,可以看到的确是存在循环嵌套的可能。

Loadbalance轮询连接 –>同步新老连接的状态 ->发送sql给服务端 -> Loadbalance轮询连接。

相关代码如下:

MySQL-JDBC驱动引起bug问题的示例

MySQL-JDBC驱动引起bug问题的示例

MySQL-JDBC驱动引起bug问题的示例

这么明显的bug,不太相信MySQL会没有发现。当前我们使用的是5.1.44版本的驱动,查看了下最新的5.1.66的代码,发现的确是修复了这个问题的,代码如下:

MySQL-JDBC驱动引起bug问题的示例

通过过滤掉SET和SHOW语句,避免了循环嵌套的发生。

但是5.1.66又引入了新的bug,由于并不是每个调用postProcess的地方都有SQL,这里的代码会抛空指针异常。MySQL JDBC的开发者都不做测试的吗……

没办法,分析了下5.1.44的代码,发现通过适当的调整loadBalanceAutoCommitStatementThreshold这个参数的数值,也可以避免循环嵌套的发生。我们的环境改成了5,修改之后,平稳运行1周,没再出现过问题。

修改方案

loadBalanceAutoCommitStatementThreshold修改成了5,但是引入的问题是,如果业务包含一些比较耗时的SQL,可能会导致DDM的负载不均衡。不过,就目前情况来看,DDM的性能还是比较强劲的~

感谢各位的阅读!关于“MySQL-JDBC驱动引起bug问题的示例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL-JDBC驱动引起bug问题的示例

本文链接: https://lsjlt.com/news/54862.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL-JDBC驱动引起bug问题的示例
    这篇文章给大家分享的是有关MySQL-JDBC驱动引起bug问题的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题背景公司是做电商系统的,整个系统搭建在华为云上。系统设计的...
    99+
    2024-04-02
  • 如何解决React.memo引起的bug问题
    这篇文章主要介绍如何解决React.memo引起的bug问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!与PureComponent不同的是PureComponent只是进行浅对比props来决定是否跳过更新数据这...
    99+
    2023-06-29
  • Mybatis整合Spring 由于版本引起的BUG问题
    错误信息:org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [SpringMVC] in context with path...
    99+
    2023-05-31
    mybatis 整合 spring
  • mysql中索引与FROM_UNIXTIME的问题示例
    小编给大家分享一下mysql中索引与FROM_UNIXTIME的问题示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!零、背景简...
    99+
    2024-04-02
  • 解决maven不能下载oracle jdbc驱动的问题
    目录maven不能下载oracle jdbc驱动问题解决方案maven配置Oracle JDBC driver驱动1.查看本地oracle版本2.从本地安装的oracle目录中获取oracle 驱动3.将oracle加载...
    99+
    2023-04-11
    maven下载oracle jdbc oracle jdbc驱动 maven oracle jdbc驱动
  • JDBC注册驱动和获取连接的示例分析
    小编给大家分享一下JDBC注册驱动和获取连接的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! JDBC 注册驱动,获取...
    99+
    2024-04-02
  • maven不能下载oracle jdbc驱动的问题怎么解决
    本篇内容主要讲解“maven不能下载oracle jdbc驱动的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“maven不能下载oracle jdbc驱动的问题怎...
    99+
    2023-07-06
  • SpringBoot中mysql的驱动依赖问题
    SpringBoot中mysql的驱动依赖问题 mysq驱动maven仓库网址 mysql依赖1 Maven Central: mysql:mysql-connector-java:8.0.32 (sonatype.com) mysql依...
    99+
    2023-08-18
    mysql spring boot java
  • 解决Qt6连接MySQL的驱动问题
    目录 1. 引出问题2. 分析问题3. 解决问题3.1 获取编译所需材料3.1.1准备生成Mysql驱动文件的工程3.1.2 准备Mysql相关的头、库文件 3.2 开始进行编译3.3 复制文件(重要)3.4 测试连接 4...
    99+
    2023-08-19
    mysql 数据库 qt c++
  • html中浮动元素引起的问题有哪些
    这篇文章主要介绍html中浮动元素引起的问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、问题多个浮动的元素无法撑开父元素的宽度,父元素的高度可能会变成0。若浮动元素后面跟非浮动元素,非浮动元素会紧随其后浮...
    99+
    2023-06-08
  • mysql autocommit=0引起的业务hang住问题分析
    这篇文章主要讲解了“mysql autocommit=0引起的业务hang住问题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql autocom...
    99+
    2024-04-02
  • 聊聊QT添加MySQL驱动依赖的问题
    在该网站下载你所需要的mysql依赖驱动版本,比如我的QT版本是5.15就下5.15版的  按照你的Qt编译版本和机器位数进行下载,比如我的机器是64位,编译环境是MS...
    99+
    2024-04-02
  • Mybatis错误引起的程序启动卡死问题及解决
    目录Mybatis错误引起的程序启动卡死解决办法原因分析Mybatis启动错误具体报错如下主要内容是说找不到接口,问题可能有两个Mybatis错误引起的程序启动卡死 mybatis ...
    99+
    2024-04-02
  • Sharding-JDBC自动实现MySQL读写分离的示例代码
    目录一、ShardingSphere和Sharding-JDBC概述1.1、ShardingSphere简介 1.2、Sharding-JDBC简介1.3、Sharding...
    99+
    2024-04-02
  • mysql中如何排查并发插入引起的死锁问题
    小编给大家分享一下mysql中如何排查并发插入引起的死锁问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!挂着VPN排查问题,不...
    99+
    2024-04-02
  • SpringCloud前后端分离后引起跨域访问的示例分析
    这篇文章主要为大家展示了“SpringCloud前后端分离后引起跨域访问的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringCloud前后端分离...
    99+
    2024-04-02
  • MYSQL字符集不同引起的join无法走索引的问题怎么解决
    本篇内容主要讲解“MYSQL字符集不同引起的join无法走索引的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL字符集不同引起的join无法...
    99+
    2024-04-02
  • 如何解决催化剂8.11驱动bug导致Vista x64双卡交火蓝屏的问题
    本篇文章为大家展示了如何解决催化剂8.11驱动bug导致Vista x64双卡交火蓝屏的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。AMD Catalyst 8.11驱动在不久前更新,号称修正...
    99+
    2023-06-14
  • MySQL之递归小问题的示例分析
    这篇文章给大家分享的是有关MySQL之递归小问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql本身不支持递归语法,但可通过自连...
    99+
    2024-04-02
  • MySQL中Identifier Case Sensitivity问题的示例分析
    这篇文章主要介绍了MySQL中Identifier Case Sensitivity问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作