`
45808916
  • 浏览: 5784 次
文章分类
社区版块
存档分类
最新评论

记一次使用Cobar踩到的坑

 
阅读更多

起因

起因是因为日志里经常报出锁等待超时的错误,并且这个是环环相扣的,一个锁等待会直接引发另外的锁等待,所以危害非常严重,影响非常深远。寻找原因发现是C3P0报出了DEADLOCK,如下图所示:
这里写图片描述

分析

可以看出来ScatteredAcquireTask,也就是获取连接的任务,全部卡在那不动了。那显然是无法获取新的数据库连接了。正好前一天刚刚进行过架构上的调整——从应用直连Mysql变化到中间添加了一层Cobar(关于Cobar,它是一个Mysql代理中间件,用来处理分库)。猜测就是切换到Cobar的问题,但是究竟是什么问题呢?下面我们来一起分析一下:

首先是切换到Cobar前的服务器结构图:

N台应用 –> 1台Mysql

下面是添加Cobar后的:

N台应用 –> 2台Cobar -> N台Mysql

那么两者之间到底有什么区别呢?我在本地做了一个测试,将C3P0的初始连接数设置到5000,也就是模拟在大量的连接请求下数据库的反应,看看是否会出现ScatteredAcquireTask卡住的情况。5000个连接建立完成了,但是出乎意料的是,我用show processlist查看Mysql线程时,居然并没有看到线程的增长,而是和刚才一样。到这里我差不多已经意识到了问题所在,为了证实这一点,我又用直连数据库的方式起了5000个连接,这次数据库连接果断就上去了。恩,看到这里大家应该也都猜到了吧,与Cobar建立连接,并不表示与Mysql建立连接,其实在我们的应用到Mysql这段道路上存在着两个“池”,一个是我们应用和Cobar之间的数据库连接池,还有一个是Cobar和Mysql之间的连接池。应用和Cobar之间的连接数并不存在瓶颈,并且我们也知道它们之间是用NIO通信的。但是CobarMysql之间呢?OH,由于Cobar只实现了一半的NIO,所以和Mysql之间还是走的BIO

这里还需要说明的一点是,我们公司的Cobar服务器是DBA来搭建和维护的。所以对我们后端开发来说所有的配置都是不透明的,我们不熟悉Cobar的配置也不知道有哪些东西可配置。但是凭借刚才的猜想,已经差不多知道瓶颈就是CobarMysql之间。

解决

跟随着自己的猜想,果断百度了一下Cobar的配置参数,发现有一个参数名为PoolSize,用来设置Cobar与后端数据源连接池大小。将其调大,即将问题解决。

并且事后在查看Cobaralarm日志时,发现出问题的时间段内正好打出如下的日志,也更加证实了我的猜想!
这里写图片描述

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    cobar的使用说明

    ### Cobar 使用说明详解 #### 一、产品约束 Cobar作为一款由阿里巴巴开源的数据库中间件,在设计之初便有着明确的功能边界与限制条件。在使用Cobar时,需注意以下约束: - **不支持跨库情况下的join、分页、排序...

    cobar架构与实践

    Cobar架构与实践是一篇详细介绍了Cobar中间件的设计理念、实施策略、系统实现以及具体应用的文档。Cobar是阿里巴巴集团开源的一个分布式数据库中间件,它能够在保证高性能、高可用性的基础上,支持复杂的系统架构和...

    cobar-server1.2.7

    用户请求到达Cobar后,Cobar会根据预设的路由策略将请求转发到正确的数据库和表上。例如,基于哈希的分表策略,可以根据用户ID的哈希值确定数据存储在哪一张表;基于范围的策略,则根据特定字段的值范围进行划分。 ...

    cobar服务器端安装文件 for linux

    Cobar服务器是一款基于Java开发的分布式数据库中间件,主要用于解决大规模数据访问的性能问题。它在Linux环境下运行,提供了一种高效、可扩展的解决方案,适用于处理高并发、大数据量的场景。Cobar的主要功能是将...

    cobar 文档汇总

    Cobar,全称为“Chinese Baidu ADB Server”,是由百度公司开发的一款开源分布式数据库中间件。它主要用于解决大规模数据处理和高并发访问的问题,通过提供MySQL协议的前端服务器,实现数据库的分片、读写分离、负载...

    cobar client的例子

    通过这个例子,我们可以学习到Cobar Client的使用方法以及其在数据库操作中的优势,如连接池管理、性能优化等。对于大型互联网应用来说,理解和掌握Cobar Client的使用是至关重要的,因为它可以帮助我们构建出高可用...

    阿里巴巴Cobar

    阿里巴巴Cobar是一款由阿里巴巴开源的高性能、分布式数据库中间件,其设计目标是为了解决大规模互联网服务中的数据分片、读写分离以及高可用性等问题。Cobar在MySQL协议层之上构建,允许应用透明地访问分布式数据库...

    cobar分表分库

    阿里巴巴cobar分表分库方案,cobar使用详细讲解,教用户手把手快速上手。

    cobar下载mysql分布式管理

    Cobar是分片数据库和表的代理,兼容MySQL protocal和MySQL SQL grama,底层存储只支持MySQL,支持前台业务更简单,稳定,高效和安全。 分片 您可以随着业务的增长添加新的MySQL的的实例。 可用性高 科巴服务器底层...

    阿里cobar中间件文档集合

    Home - Cobar - Alibaba Open Sesame 产品文档(未完成) - Cobar - Alibaba Open Sesame_action 路由算法 - Cobar - Alibaba Open Sesame_action rule - Cobar - Alibaba Open Sesame 数据源心跳配置 - Cobar - ...

    COBAR架构实践

    COBAR架构实践COBAR架构实践COBAR架构实践COBAR架构实践COBAR架构实践COBAR架构实践COBAR架构实践COBAR架构实践COBAR架构实践

    Cobar说明文档

    ### Cobar说明文档知识点梳理 ...综上所述,Cobar是一个高度灵活且功能强大的分布式数据库中间件,能够有效地解决大数据量带来的挑战,并且提供了丰富的配置选项和管理工具来帮助用户更好地管理和使用系统。

    cobar-server-1.2.7-seprate-commit

    总结起来,Cobar Server 1.2.7的这一改进,是数据库中间件领域的一次重要优化,通过分离提交和回滚操作,显著提高了系统在高并发环境下的稳定性和效率,对于应对大规模分布式数据库环境的挑战具有重要意义。对于使用...

    阿里巴巴Cobar架构设计与实践

    阿里巴巴cobar架构的讲解。主要讲解为什么使用cobar,搭建方式、优势

    cobar-server-1.2.7.tar

    Cobar 是一个高性能、分布式的关系型数据库中间件,它的全称是“Clustered MySQL Bar”。在阿里巴巴集团内部,Cobar 曾经被广泛应用于解决大规模数据处理和高并发访问的问题。Cobar 的主要目标是通过分库分表、读写...

    Cobar - Alibaba Open Sesame

    - **(推荐)Cobar 原理及应用.ppt**:提供了关于 Cobar 的详细介绍和使用案例,有助于更深入地理解其工作机制。 综上所述,Cobar 作为一个分布式数据库中间件,提供了强大的数据处理能力和高可用性支持,适用于需要...

    cobar+spring+oracle数据源切换

    它作为一个数据库代理,可以将用户的SQL请求转发到后端的多个数据库实例,从而提高系统的并发处理能力。Cobar尤其适合那些需要处理大量读取操作的系统,因为它可以将读请求分散到多个从库上,减轻主库的压力。 ...

    阿里巴巴 分布式数据库 Cobar

    阿里巴巴 分布式数据库 Cobar. 数据库访问代理 水平分区工具.

    中间件及程序 java cobar j2ee

    中间件是一种软件,它在操作系统、网络和应用软件之间起到桥梁的作用,允许不同的应用程序和服务进行交互和通信。在IT行业中,中间件对于构建分布式系统、处理高并发、数据存储和检索等方面至关重要。Java Cobar和...

Global site tag (gtag.js) - Google Analytics