记一次使用Cobar踩到的坑

article/2025/9/17 14:51:36

起因

起因是因为日志里经常报出锁等待超时的错误,并且这个是环环相扣的,一个锁等待会直接引发另外的锁等待,所以危害非常严重,影响非常深远。寻找原因发现是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日志时,发现出问题的时间段内正好打出如下的日志,也更加证实了我的猜想!
这里写图片描述


http://chatgpt.dhexx.cn/article/kCmUl9QC.shtml

相关文章

Cobar介绍及配置

原文地址为: Cobar介绍及配置 from:http://code.alibabatech.com/wiki/display/cobar/Home Skip to end of metadata Page restrictions applyAttachments:1Added by kimi Lv, last edited by 邱 硕 on 十月 18, 2012 (view change) Comment: Go to st…

用cobar搭建分布式数据库

周末针对最新的项目需求进行cobar的搭建并针对实际状况做了demo演示 一、需求 1、大数据量,邮件发送记录需要记录,一年可能累计4亿的数据 2、需要按照邮箱进行邮件发送明细的查询以及发送记录的查询 二、问题 1、单库分表分区已经解决不了存储以及查…

用cobar搭建分布式数据库 .

周末针对最新的项目需求进行cobar的搭建并针对实际状况做了demo演示 一、需求 1、大数据量,邮件发送记录需要记录,一年可能累计4亿的数据 2、需要按照邮箱进行邮件发送明细的查询以及发送记录的查询 二、问题 1、单库分表分区已经解决不了存储以及查…

开源的分布式数据库中间件系统Mycat和阿里巴巴Cobar的对比

mycat 不得不说的缘分 原创 2016年04月15日 15:48:17 27834 1,愕然回首,它在灯火阑珊处 关于mysql集群中间件,以前写在应用程序里面,由开发人员实现,在配置文件里面写多个数据源,写库一个数据源&#xff0…

分布式数据中间件TDDL、Amoeba、Cobar、MyCAT架构比较

框架比较 TDDL Amoeba Cobar MyCat 点评 TDDL不同于其它几款产品,并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。属于JDBC Shard的思想,网上也有很多其它类似产品。 另外,网上有关于TDDL的图&#x…

TDDL、Amoeba、Cobar、MyCAT架构比较

布式数据库中间件TDDL、Amoeba、Cobar、MyCAT架构比较分 比较了业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线 框架比较 TDDL Am…

Cobar使用文档(可用作MySQL大型集群解决方案)

转:http://blog.csdn.net/shagoo/article/details/8191346 最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家。Cobar是阿里巴巴研发的关系型数据的分布式处理系统&am…

Cobar的架构与实践

Cobar是提供分布式数据库服务的中间件,是阿里巴巴B2B前台应用访问数据库的统一入口。本文讲述的就是Cobar的架构演变与应用实践。 2008年,阿里巴巴B2B成立了平台技术部,为各个业务部门的产品提供底层的基础平台。这些平台涵盖Web框架、消息…

alibaba的COBAR真是强大.

最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家。Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle的数据存储方案,目…

Alibaba的COBAR真是强大

 最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家。Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle的…

Cobar Client的使用

cobar client是出自阿里的产品,cobar client只需要引入jar包即可,不需要建立服务。下面的地址是cobar client的帮助文档 http://code.alibabatech.com/docs/cobarclient/zh/ http://www.kuqin.com/system-analysis/20120212/318089.html 分库分表都…

Cobar介绍

概述 Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。 产品在阿里巴巴B2B公司已经稳定运行了3年以上。目前已经接管了3000个MySQL数据库的schema,为应用提供数据服务。据最近统计cobar集群目前…

[存储] Cobar使用文档(可用作MySQL大型集群解决方案)

最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家。Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle的数据存储方案,目…

Linux nohup命令用法详解

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前…

Linux nohup 命令

1.简介 nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。 nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文…

【nohup】nohup命令的简单使用

文章目录 1 nohup时2 nohup后 1 nohup时 执行下方命令后,将 标准输出(1,默认可不写)、错误信息(2) 写入到 output.log 文件中。 nohup python train.py >output.log 2>&1 & nohup hb_mapper makertbin -c xx.yaml --model-type onnx 2&g…

【学习笔记】Windows 下线程同步之互斥锁

目录 前言环境简介相关函数CreateMutexWait 函数ReleaseMutexCloseHandle 其他互斥锁的名字未命名互斥锁的同步互斥锁的意外终止临界区对象 示例参考 前言 本文所涉及的同步主要描述在 Windows 环境下的机制,和 Linux 中的同步机制有一定的联系,但注意并…

C++——互斥量

文章目录 一、基本知识二、独占互斥量mutex1.mutex的介绍2.mutex的成员函数3.实例演示 三、lock_guard和unique_lock的使用和区别四、递归互斥量recursive_mutex1.基本知识2.演示示例 五、带超时的互斥量std::timed_mutex和std::recursive_timed_mutex 一、基本知识 C11提供如…

Linux——什么是互斥与互斥锁

目录 一.前提:临界区 & 临界资源 二.什么是互斥 (一).互斥概念 (二).为什么需要互斥 三.互斥锁介绍 (一).互斥锁的概念 (二).互斥锁的使用 ①系统API接口 ②…

线程的互斥与同步

线程的互斥与同步 线程的互斥简单的抢票程序互斥量初始化互斥量销毁互斥量互斥量加锁和解锁 互斥量实现原理 可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见不可重入的情况常见可重入的情况可重入与线程安全联系可重入与线程安全区别 死锁死锁四个必要条…