我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何解析MySQL性能瓶颈排查定位

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何解析MySQL性能瓶颈排查定位

如何解析MySQL性能瓶颈排查定位,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

导读

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


排查过程

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

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

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

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

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

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

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

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

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

  • 这时我们可以执行下面的命令来判断到底瓶颈在哪个子系统(横版查看):

    [yejr@imysql.com:~ ]# top
    top - 11:53:04 up 702 days, 56 min,  1 user,  load average: 7.18, 6.70, 6.47
    Tasks: 576 total,   1 running, 575 sleeping,   0 stopped,   0 zombie
    Cpu(s):  7.7%us,  3.4%sy,  0.0%ni, 77.6%id, 11.0%wa,  0.0%hi,  0.3%si,  0.0%st
    Mem:  49374024k total, 32018844k used, 17355180k free,   115416k buffers
    Swap: 16777208k total,   117612k used, 16659596k free,  5689020k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    14165 mysql     20   0 8822m 3.1g 4672 S 162.3  6.6  89839:59 mysqld
    40610 mysql     20   0 25.6g  14g 8336 S 121.7 31.5 282809:08 mysqld
    49023 mysql     20   0 16.9g 5.1g 4772 S  4.6 10.8   34940:09 mysqld

    很明显是前面两个mysqld进程导致整体负载较高。
    而且,从 Cpu(s) 这行的统计结果也能看的出来,%us

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

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

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

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

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

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

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

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

关于如何解析MySQL性能瓶颈排查定位问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何解析MySQL性能瓶颈排查定位

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux MySQL性能瓶颈排查

在排查MySQL性能瓶颈时,可以采取以下几个步骤:监控MySQL的性能指标,包括CPU利用率、内存利用率、磁盘I/O、网络流量等。可以使用工具如top、iostat、vmstat等来进行监控。使用MySQL自带的性能监控工具,如Perfor
Linux MySQL性能瓶颈排查
2024-08-16

MySQL INSERT锁与数据库性能瓶颈定位

在MySQL中,当执行INSERT操作时会涉及到行级锁和表级锁。行级锁是针对INSERT操作中需要修改的行进行加锁,而表级锁是对整张表进行加锁。如果遇到性能瓶颈,需要查看以下几个方面来定位问题:检查数据库的性能指标:使用SHOW GLOB
MySQL INSERT锁与数据库性能瓶颈定位
2024-08-19

Paddle模型性能分析工具Profiler定位瓶颈点优化程序详解

这篇文章主要为大家介绍了Paddle模型性能分析工具Profiler定位瓶颈点优化程序详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-10

Golang 技术性能优化中如何分析性能瓶颈?

通过使用 pprof 和 trace 等工具,可以分析 go 应用程序的性能瓶颈。具体步骤包括:使用 pprof 生成阻塞剖析报告以识别阻塞时间最长的函数。使用 trace 记录应用程序执行并分析跟踪文件以识别导致高延迟或 cpu 使用率的
Golang 技术性能优化中如何分析性能瓶颈?
2024-05-13

如何使用Go语言分析性能瓶颈

使用 go 语言分析性能瓶颈:使用 pprof 进行 cpu、内存和阻塞分析。通过交互式 web 界面或火焰图可视化分析数据。实践案例:分析 cpu 性能(使用 slowfunction() 函数示例)。如何使用 Go 语言分析性能瓶颈在
如何使用Go语言分析性能瓶颈
2024-05-08

如何剖析C++程序以识别性能瓶颈?

通过使用 valgrind、gprof 或 perf 等分析工具以及优化函数签名、数据结构和内存分配,可以识别和消除 c++++ 程序中的性能瓶颈,提高应用程序效率。例如,如果一个计算方程的函数因使用低效数据结构而成为瓶颈,将其替换为哈希表
如何剖析C++程序以识别性能瓶颈?
2024-05-08

如何使用工具分析 PHP 函数性能瓶颈?

php 函数性能分析工具:安装 xdebug,分析函数执行时间和内存使用情况。使用 blackfire 分析函数性能,生成交互式图表和详细报告。如何使用工具分析 PHP 函数性能瓶颈在进行 PHP 开发时,优化函数性能至关重要。借助各种工
如何使用工具分析 PHP 函数性能瓶颈?
2024-04-25

如何解决PHP开发中的性能瓶颈和优化问题

在PHP开发过程中,性能瓶颈和优化问题是我们经常面对的挑战。一个高效的PHP应用程序可以提升用户体验,减少服务器负载,并节省成本。本文将探讨一些常见的性能瓶颈问题,并提供一些解决方案和代码示例。一、数据库查询优化数据库查询是PHP应用程序中
2023-10-21

MySQL 如何分析查询性能

查询优化、索引优化和表设计优化是环环相扣的。如果你有丰富的编写MySQL查询语句的经验,你就会知道如何设计表和索引来支持有效的查询。同样的,知晓表设计同样有助于了解表结构如何对查询语句产生影响。因此,即便表设计和索引都设计得很好,但如果查询
2022-05-12

MySQL慢查询如何定位详解

前言 相信大家在平时工作中都有过 SQL 优化经历,那么在优化前就必须找到慢 SQL 方可进行分析。这篇文章就介绍下如何定位到慢查询。 慢查询日志是 MySQL 内置的一项功能,可以记录执行超过指定时间的 SQL 语句。 以下是慢查询的相关
2022-05-17

如何分析用pt-stalk定位MySQL短暂的性能问题

本篇文章为大家展示了如何分析用pt-stalk定位MySQL短暂的性能问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。【背景】MySQL出现短暂的3-30秒的性能问题,一般的监控工具较难抓到现场,
2023-06-06

如何分析网站开发中关键字排名处于瓶颈状态时的解决办法

这篇文章将为大家详细讲解有关如何分析网站开发中关键字排名处于瓶颈状态时的解决办法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  首先先来分析下这些网站的共同特点。这些网站的拥有很多共同的特
2023-06-12

如何对MySQL进行性能调优和故障排查?

如何对MySQL进行性能调优和故障排查?一、引言MySQL是目前使用最广泛的关系型数据库管理系统之一,它在许多应用场景中都扮演着重要的角色。但是,随着数据量逐渐增大和业务需求的增长,MySQL的性能问题和故障排查变得越来越常见。本文将介绍如
2023-10-22

Python如何对MySQL数据库进行性能调优和故障排查?(使用Python如何优化MySQL性能并进行故障排查?)

使用Python进行MySQL数据库性能调优,包括连接池、参数化查询、索引、查询优化、硬件配置和故障排查技巧。通过建立连接池、减少SQL注入风险、优化查询、使用索引、调整服务器设置和解决常见问题,可以显著提升MySQL数据库性能。
Python如何对MySQL数据库进行性能调优和故障排查?(使用Python如何优化MySQL性能并进行故障排查?)
2024-04-02

MySQL数据库性能监控与故障排查的项目经验解析

MySQL数据库是目前广泛应用于各种网站和应用程序的关系型数据库管理系统,它的稳定性和性能对于一个系统的正常运行非常重要。然而,由于各种原因,MySQL数据库可能会出现性能问题和故障,因此需要进行性能监控和故障排查。本文将从项目经验的角度,
MySQL数据库性能监控与故障排查的项目经验解析
2023-11-03

编程热搜

目录