位置: 编程技术 - 正文

MySQL性能瓶颈排查定位实例详解(mysql性能问题)

编辑:rootadmin

推荐整理分享MySQL性能瓶颈排查定位实例详解(mysql性能问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql 性能排查,mysql性能优化,mysql性能问题,mysql性能极限,mysql性能问题,mysql 性能瓶颈,mysql 性能瓶颈,mysql性能问题,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了MySQL性能瓶颈排查定位的方法。分享给大家供大家参考,具体如下:

导读

从一个现场说起,全程解析如何定位性能瓶颈。

排查过程

收到线上某业务后端的MySQL实例负载比较高的告警信息,于是登入服务器检查确认。

1. 首先我们进行OS层面的检查确认

登入服务器后,我们的目的是首先要确认当前到底是哪些进程引起的负载高,以及这些进程卡在什么地方,瓶颈是什么。

通常来说,服务器上最容易成为瓶颈的是磁盘I/O子系统,因为它的读写速度通常是最慢的。即便是现在的PCIe SSD,其随机I/O读写速度也是不如内存来得快。当然了,引起磁盘I/O慢得原因也有多种,需要确认哪种引起的。

第一步,我们一般先看整体负载如何,负载高的话,肯定所有的进程跑起来都慢。

可以执行指令 w 或者 sar -q 1 来查看负载数据,例如:

或者 sar -q 的观察结果:

load average大意表示当前CPU中有多少任务在排队等待,等待越多说明负载越高,跑数据库的服务器上,一般load值超过5的话,已经算是比较高的了。

引起load高的原因也可能有多种:

某些进程/服务消耗更多CPU资源(服务响应更多请求或存在某些应用瓶颈);

发生比较严重的swap(可用物理内存不足);

发生比较严重的中断(因为SSD或网络的原因发生中断);

磁盘I/O比较慢(会导致CPU一直等待磁盘I/O请求);

这时我们可以执行下面的命令来判断到底瓶颈在哪个子系统:

很明显是前面两个mysqld进程导致整体负载较高。

而且,从 Cpu(s) 这行的统计结果也能看的出来,%us 和 %wa 的值较高,表示当前比较大的瓶颈可能是在用户进程消耗的CPU以及磁盘I/O等待上。

我们先分析下磁盘I/O的情况。

MySQL性能瓶颈排查定位实例详解(mysql性能问题)

执行 sar -d 确认磁盘I/O是否真的较大:

再利用 iotop 确认到底哪些进程消耗的磁盘I/O资源最多:

可以看到,端口号是的实例消耗的磁盘I/O资源比较多,那就看看这个实例里都有什么查询在跑吧。

2. MySQL层面检查确认

首先看下当前都有哪些查询在运行:

可以看到有不少慢查询还未完成,从slow query log中也能发现,这类SQL发生的频率很高。

这是一个非常低效的SQL写法,导致需要对整个主键进行扫描,但实际上只需要取得一个最大值而已,从slow query log中可看到:

Rows_sent: 1 Rows_examined: 每次都要扫描多万行数据,却只为读取一个最大值,效率非常低。

经过分析,这个SQL稍做简单改造即可在个位数毫秒级内完成,原先则是需要-秒才能完成,提升了N次方。

改造的方法是:对查询结果做一次倒序排序,取得第一条记录即可。而原先的做法是对结果正序排序,取最后一条记录,汗啊。。。

写在最后,小结

在这个例子中,产生瓶颈的原因比较好定位,SQL优化也不难,实际线上环境中,通常有以下几种常见的原因导致负载较高:

一次请求读写的数据量太大,导致磁盘I/O读写值较大,例如一个SQL里要读取或更新几万行数据甚至更多,这种最好是想办法减少一次读写的数据量;

SQL查询中没有适当的索引可以用来完成条件过滤、排序(ORDER BY)、分组(GROUP BY)、数据聚合(MIN/MAX/COUNT/AVG等),添加索引或者进行SQL改写吧;

瞬间突发有大量请求,这种一般只要能扛过峰值就好,保险起见还是要适当提高服务器的配置,万一峰值抗不过去就可能发生雪崩效应;

因为某些定时任务引起的负载升高,比如做数据统计分析和备份,这种对CPU、内存、磁盘I/O消耗都很大,最好放在独立的slave服务器上执行;

服务器自身的节能策略发现负载较低时会让CPU降频,当发现负载升高时再自动升频,但通常不是那么及时,结果导致CPU性能不足,抗不过突发的请求;

使用raid卡的时候,通常配备BBU(cache模块的备用电池),早期一般采用锂电池技术,需要定期充放电(DELL服务器天一次,IBM是天),我们可以通过监控在下一次充放电的时间前在业务低谷时提前对其进行放电,不过新一代服务器大多采用电容式电池,也就不存在这个问题了。

文件系统采用ext4甚至ext3,而不是xfs,在高I/O压力时,很可能导致%util已经跑到%了,但iops却无法再提升,换成xfs一般可获得大幅提升;

内核的io scheduler策略采用cfq而非deadline或noop,可以在线直接调整,也可获得大幅提升。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。

MySQL异常恢复之无主键情况下innodb数据恢复的方法 本文讲述了MySQL异常恢复之无主键情况下innodb数据恢复的方法。分享给大家供大家参考,具体如下:在mysql的innodb引擎的数据库异常恢复中,一般都要求有

如何配置全世界最小的 MySQL 服务器 配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如

多种不同的 MySQL 的 SSL 配置 在这篇博客的帖子里,我将会描述不同的使用MySQL数据库的SSL配置方法。SSL给了你什么你可以通过互联网使用MySQL复制特性(replication)或者通过互联网

标签: mysql性能问题

本文链接地址:https://www.jiuchutong.com/biancheng/321322.html 转载请保留说明!

上一篇:MySQL解决SQL注入的另类方法详解(mysql注入的修复方式)

下一篇:MySQL异常恢复之无主键情况下innodb数据恢复的方法(mysql异常退出)

  • 工资完整的账务处理
  • 委托加工应税消费品代扣代缴
  • 进货增值税税率
  • 增值税结转和个体工商户的增值税缴纳分录如何做?
  • 固定资产清理结转到什么科目
  • 出差补贴计入
  • 企业出现亏损的原因有哪些
  • 可供出售权益工具投资是非货币
  • 短期借款,应付票据,应付账款和应交税费属于
  • 企业交税前可以扣除的费用
  • 营改增后企业要交哪些税
  • 小规模纳税人开具1%增值税专用发票可以抵扣吗
  • 所得税汇算清缴分录怎么做
  • 一般纳税人首次领票能领多少
  • 成本票和费用票分别是什么
  • 免征残保金还需交税吗
  • 住房公积金做账怎么看交了哪些人
  • 分公司收到总公司拨款怎么做分录
  • 商品流水账怎么做
  • 成本费用利润率越高,说明企业盈利能力
  • 发票上不小心印上作废两个字怎么办
  • 收回股东投资
  • 小企业的费用应当在发生时计入当期损益
  • 退税收入要不要交所得税?
  • 现金流量表与资产负债表不符
  • 税盘减免税款的会计分录
  • 财政补贴会计入养老金一起发放吗
  • 如何关闭开始菜单快捷键
  • 法人把资产转移到国外有没有限制
  • 可作为税前扣除的项目有
  • 进项税大于销项税怎么结转
  • 逾期未申报如何申报
  • 报销差旅费怎么算
  • php dechex
  • 营业外收入主要来源
  • 当人力资源短缺时,用什么方法增加人力资源?
  • 委托加工物资增值税计税依据
  • 职工报工伤后用人单位还有赔偿吗
  • 企业所得税季度申报数据怎么来
  • 报销差旅费凭证怎么做
  • bat开源项目
  • codeignitor
  • 模糊数学神经网络
  • phpwebsocket框架
  • 对方不给开发票做账可以直接出费用吗?
  • php算法有哪些
  • 进口消费税应该记到什么科目
  • 红字发票还要交税吗
  • 百旺如何作废发票
  • 政府会计资产的概念
  • 金蝶专业版仓库管理怎么结账
  • 职工福利费的会计处理
  • 税盘维护费可以年年抵扣吗
  • 商贸企业 税收 政策规定
  • 调整以前年度费用如何做分录
  • 公司对员工的罚款用途
  • 计提医疗保险费的会计分录
  • 无形资产摊销方法应反映其经济利益的预期实现方式
  • 从货款中扣除罚款的分录怎么写
  • 零余额账户银行日记账
  • 固定资产发票后到怎么入账
  • 对公账户往来款需要开票吗
  • 取得投资时支付的相关税费
  • sqlserver存储过程声明变量
  • Mysql主库死锁了导致从库停止复制
  • Vista Virtual PC软件安装XP系统
  • win8如何添加启动项
  • windows10网页打不开怎么办
  • win10如何禁用windows defender
  • win7的打开方式在哪里
  • win7 32位旗舰版电脑城下载
  • windows8如何进入bios
  • bootstrap不支持ie
  • wordpress单页面店铺
  • centos6升级到centos8
  • JavaScript中Number.NEGATIVE_INFINITY值的使用详解
  • shell的使用
  • JavaScript中数组长度的属性
  • 个人涉税信息采集 工行
  • 税务数字证书怎么下载安装
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设