前不久从项目一线同学得到某集群的告警信息,某个时间段 TiDB duration 突然异常升高,持续时间6小时左右,需要定位到具体原因。
领导同事都曾问到过,如果出现一个数据库问题,或者应用的问题,应该怎么快速定位该问题?
系统从圣诞节那天晚上开始,每天晚上固定十点多到十一点多这个时段,大概瘫痪1h左右,过这时段系统自动恢复。系统瘫痪时的现象就是,网页和App都打不开,请求超时。系统架构:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在使用或运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律,通过经验的积累可以快速的定位和优化,不好排查的问题需要从读 TiDB 的每个过程一一排查和分析处理。
前几天,有位客户提了一个慢查询问题,需要这边帮忙分析一下;整个排查过程还是非常有趣,涉及到一些值得关注的知识点,因此在这里记录一下。
在日常业务使用或运维管理 TiDB 的过程中,每个开发人员或数据库管理员都或多或少遇到过 SQL 变慢的问题。这类问题大部分情况下都具有一定的规律可循,通过经验的积累可以快速的定位和优化。 但是有些情况下不一定很好排查,尤其涉及到内核调优等方向时,如果事先没有对各个组件的互访关系、引擎存储原理等有一定的了解,往往难以下手。
高可用真是一丝细节都不得马虎。平时跑的好好的系统,在相应硬件出现故障时就会引发出潜在的Bug。偏偏这些故障在应用层的表现稀奇古怪,很难让人联想到是硬件出了问题,特别是偶发性出现的问题更难排查。今天,笔者就给大家带来一个存储偶发性故障的排查过程。
在项目里面,多多少少都隐藏着一些执行比较慢的SQL, 不同的开发测试人员在平时使用的过程中多多少少都能够遇到,但是无法立马有时间去排查解决。那么如果有一个文件能够将这些使用过程中比较慢的SQL记录下来,定期去分析排查,那该多美好啊。这种情况MySQL也替我们想到了,它提供了SQL慢查询的日志,本文就分享下如何使用吧。
2)有时候出去面试,明明感觉和面试官聊的很好,但面试完成后就没有后续,是否有过疑惑,这是why?
线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功。
春天到了大地都复苏了,沉寂了很久的cpu也开始慢慢复苏了,所谓前人埋坑后人填坑,伴随着阿里云监控报警,线上CPU使用率暴增,于是就开始了排查之路。
关于SQL优化相关的问题,相信很多同学在面试过程中都有被问到过,要么不知道,要么回答不清楚。见于此情况,勇哥今天有空,就和大家聊聊这个相关的话题。
1 问基本的操作技能,这里当然不会直接问sql语法,而会挑些点来问,比如左连接怎么做,with语句或merge语句的含义和用法。
他又又又双叒叕踩坑了!这个系统的架构是一个非常典型的小型创业公司的微服务架构。系统的架构如下图:
场景:最近遇到紧急生产问题,因为数据库锁表导致业务功能不能正常使用,对于这种紧急问题,首先要安稳心态,然后合理分析问题,可以先从整体出发,拿下Oracle AWR报告,进行整体分析
最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章。
在开始排错之前我们需要知道 Update 在 MySQL 中的生命周期是什么,MySQL 如何执行一个事务的。
先说结论,我支持将逻辑写在 Java 等应用系统中。 背景:今天只讨论一种应用模式,就是最普遍的,前端实时调用后端web服务,服务端经过DB的增删改查作出响应的应用。至于离线数据分析,在线规则引擎模板执行,流式计算等不在本次讨论范畴。 重SQL开发的场景 先看一个例子吧。用经典的 Controller Service DAO 开发模式描述。 city表city_namecity_code student表student_namecity_codestudent_id score表student_idsc
在公司监控大盘上看到了我负责的项目的数据库服务器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恢复正常。
为更好的帮助DBA运维数据库,腾讯云将于每月12日在社群直播开展DBbrain诊断日,腾讯云高级产品经理迪B哥直播解析经典数据库运维难题,结合腾讯云数据库智能管家DBbrain的能力,为大家提供问题优化思路和方法,玩转数据库! 本期诊断日主要分享内容:如何使用智能管家DBbrain解决MySQL实例CPU使用率过高的问题? 1 前言 在使用MySQL的过程中,经常会遇到由于数据库性能问题导致的业务故障。对于研发、运营、产品等非运维职能的同事来说,往往更愿意请DBA来协助定位问题和优化。如果公司确有DBA
项目组来了一位资深java同学,分配第一个需求上线,上线后发现sql导致慢sql,立马就把版本回滚了,但是回滚后发现,还是慢....,所有的从库执行的sql都是超级慢的.....
如果面试问你,执行SQL响应慢,你有哪些排查思路和解决方案?这是一位去某里面试的小伙伴跟我分享的面试真题,那今天我给大家来分享一下我的思路。
慢查询指的是数据库中执行时间超过指定阈值的 SQL 语句。不同业务场景下,这个阈值通常各不相同。在我们公司内部,这个阈值被设定为 1 秒钟。也就是说,任何执行时间超过 1 秒的 SQL 语句都会被视为慢查询。
MongoDB的慢SQL日志是记录到业务库的system.profile表里,当线上DB运行缓慢时,开发通常联系DBA去排查问题,那么可以将这种机械化的工作,做成一个平台化、可视化的工具出来,让开发在网页里点点鼠标即可查看数据库运行状况,这将大大提高工作效率,降低对DBA的依赖。
很多业务系统在发生问题的时候感觉是突然发生的,但是按照分析问题的思路查下去却发现是这样那样的原因,毫无疑问大多是一些很小的问题逐步放大之后看到的。
在当今的互联网时代,线上问题对企业的业务连续性和用户体验产生的影响越来越大。无论是网站崩溃、应用性能下降,还是服务中断,这些问题都可能对企业的声誉和用户满意度造成严重影响。因此,快速、准确地排查并解决线上问题变得至关重要。
工程师反馈数据库服务器内存使用率高,并且之前曾触发告警,登录服务器使用top -u mysql查看进程使用内存信息:
之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原因,发现数据库的慢日志报警有些奇怪,主要表现是慢日志报警不属实,收到报警的即时通信提醒后,隔一会去数据库里面去排查,发现慢日志的性能似乎没有那么差(我设置的一个阈值是60)。
从目前的系统来看,系统的优化无非就几个方向。第一个是CPU的使用,可以去分析哪一个线程占用的CPU最多,以及哪一个线程耗时最久,从这个角度去分析。第二点就是内存,你也可以去从对象的实例中去判断哪一个对象的实例最多,从而进行一个优化。再者从java的底层去分析GC的次数频不频繁。哪一些代码写的不太合理,最后就是整个架构层面的。消息积压消费,缓存是否设置的合理。这都会影响到整个架构的性能。这个章节主要是简单的描述一下。架构如何去优化他的排查思路是什么。
然而,10点多的时候,运营小哥哥突然告诉我后台打不开了,我怀着一颗“有什么大不了的,估计又是(S)(B)不会连wifi”的心情,自信的打开了网址,果然,真打不开了。
导语 腾讯云云监控于近日发布了两款产品:应用性能观测(APM)、前端性能监控(RUM),帮助用户解决调用链追踪问题,减少 MTTR(平均修复时间),以及帮助提升用户在 Web、小程序端的使用体验。 APM 集成微服务团队丰富的业务场景沉淀以及云监控打磨多年的高性能数据处理中台,云监控 - 应用性能观测平台(APM)正式开放测试。如果您的团队还在苦于日益复杂的后台服务架构、日渐增长的故障排查时间,我们诚邀您试用云监控 APM ,开启一体化、自动化的后台服务监控体验。 点击文末"阅读原文" 立即申请体验APM
首先找到慢的即可,确认是请求慢还是响应慢, 然后确认是不是接口慢,减少多余数据的传输。
学完数据库基础知识,要想更深入地了解数据库,就需要学习数据库进阶知识,今天我们就先来聊一聊慢SQL查询那些事儿。
根据之前的经验来看,要么是业务消费逻辑出现问题导致消费过慢,当然也有小概率是消息队列的 Bug(我们使用的是 pulsar)。
项目系统,多接口混压过程中,发现QPS有掉坑的情况,同时也发现其中一个接口的95分位响应时长明显慢于其它接口。
监控系统监控到我们的程序变慢了,怀疑是sql的原因,要怎么去分析排查呢?一般按照如下几个步骤进行:
爱可生 DBA 团队成员,负责项目中数据库故障与平台问题解决,对数据库高可用与分布式技术情有独钟。
想必本文的读者对数据库都不会陌生,由于数据库良好的特性和服务的稳定性,使得我们的工作几乎离不开,而数据库连接池因为连接复用的优势也被广泛的使用,但凡事不可能只有好处而没有代价,使用连接池一个最直接的代价就是需要配置一堆的参数。其实很多时候这个复杂度也不存在,只要找个工程把配置拷贝一份,改一下用户名密码也就能工作了,因为之前的配置都正常工作了一段时间基本也没问题了,这个逻辑本身没毛病,但有个前提至少知道配了什么,不然问题来了都不知道如何应对。本文以 druid 1.1.5 (https://github.com/alibaba/druid) 连接池为例来阐述几个参数的重要性及如何避免踩坑,虽然下面提到的都是 druid 的配置项,但多数连接池(不限于数据库)其实也都有类似的配置,基本用法和场景均可借鉴。
这篇博文后,提到了不少引导的说辞和技巧,如果能把面试官的提问引导到事先准备好的亮点上,一方面确实可以更有效地耗费面试时间,另一方面也能最大程度地挖掘和展示自己的亮点。
想必本文的读者对数据库都不会陌生,由于数据库良好的特性和服务的稳定性,使得我们的工作几乎离不开,而数据库连接池因为连接复用的优势也被广泛的使用,但凡事不可能只有好处而没有代价,使用连接池一个最直接的代价就是需要配置一堆的参数。其实很多时候这个复杂度也不存在,只要找个工程把配置拷贝一份,改一下用户名密码也就能工作了,因为之前的配置都正常工作了一段时间基本也没问题了,这个逻辑本身没毛病,但有个前提至少知道配了什么,不然问题来了都不知道如何应对。
前两天和同事一块看一个夜维程序执行异常慢的问题,是一个比较典型的问题,同时也是一个比较头疼的问题。
刚入职的时候,同事就提醒过我,涉及三四张表的时候,数据量大,尽量不用连表查询,用单表。我最近还真的是遇到了。因为联表查询导致引发的慢sql。
本篇文章记录了一次接口慢查问题排查过程,该问题产生的现象迷惑性较高。同时由于问题偶发性高,排查难度也比较大。排查过程从 druid 数据源“导致”的一个慢查现象作为切入点,逐步分析,排除诸多可能性后仍无解。之后重新审视故障现象,换个角度分析,找到了问题根因。最后对问题原因进行了验证确认,结果符合预期。到此,排查过程算是结束了,本文对问题进行记录归档。
tcpdump在我们平时运维中充当了很重要的角色,对复杂问题的排查、分析起到了至关重要的作用,确实为运维中的一大利器。
最近遇到一个慢sql,在排查过程中发现和分库分表后的索引设置有关系,总结了下问题。
墨墨导读:本文以 druid 1.1.5 (https://github.com/alibaba/druid) 连接池为例来阐述几个参数的重要性及如果避免踩坑,虽然下面提到的都是druid的配置项,但多数连接池(不限于数据库)其实也都有类似的配置,基本用法和场景均可借鉴。
通过Apifox进行接口压力测试也能轻易复现问题,且在一轮3600次的请求中,慢请求基本只出现在前几次请求中
领取专属 10元无门槛券
手把手带您无忧上云