首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    记一次mysql数据库cpu暴涨100%事故

    在公司监控大盘上看到了我负责的项目的数据库服务器CPU达到100%了, 于是紧急排查问题。仔细的看了一下监控大盘,发现时间从下午3点47分起就开始迅速上升到满cpu的情况,并且持续了23分钟,之后又断断续续的满cpu,每次持续时间大概在几分钟到10分钟左右。第一反应是想到是不是服务器有什么错误日志没输出,检查了elk中的错误,没有错误异常。第二个排查的地方是检查从3点47分起开始的访问量看看是不是并发比较高,发现访问量也是正常的,qps大概在60左右。于是下去找运维要一份数据库的慢sql,但是运维还没看到有慢sql(这点不清楚运维的慢sql是怎么记录日志的,按道理是应该有慢sql)。于是通过show processlist查询到了大概4,5条正在执行的查询。发现用户是我们yearning的用户,而不是应用的用户,并且query_start的起始时间距离现在也差不多在7,8分钟左右。将该sql展开发现是一个在yearning上面执行的inner join,我们是有分表的措施的,将数据按照不同企业维度分摊到10个表。平均一张表大概在10万左右的数据量,同事执行的inner join查询通过explain关键词分析发现该语句笛卡尔积之后的扫描行数足足有6亿行,最后筛选出了89行符合要求的数据。跟同事沟通了一下才发现是他执行的复杂查询。让运维帮忙kill掉查询语句后,数据库cpu恢复正常。

    01

    数据库连接池配置(案例及排查指南)

    想必本文的读者对数据库都不会陌生,由于数据库良好的特性和服务的稳定性,使得我们的工作几乎离不开,而数据库连接池因为连接复用的优势也被广泛的使用,但凡事不可能只有好处而没有代价,使用连接池一个最直接的代价就是需要配置一堆的参数。其实很多时候这个复杂度也不存在,只要找个工程把配置拷贝一份,改一下用户名密码也就能工作了,因为之前的配置都正常工作了一段时间基本也没问题了,这个逻辑本身没毛病,但有个前提至少知道配了什么,不然问题来了都不知道如何应对。本文以 druid 1.1.5 (https://github.com/alibaba/druid) 连接池为例来阐述几个参数的重要性及如何避免踩坑,虽然下面提到的都是 druid 的配置项,但多数连接池(不限于数据库)其实也都有类似的配置,基本用法和场景均可借鉴。

    03
    领券