MYSQL数据库服务磁盘IO高问题分析与优化

2023-11-02


压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等。而问题定位分析通常情况下,最优先排查的是监控服务器资源利用率,例如先用TOP 或者nmon等查看CPU、内存使用情况,然后在排查IO问题,例如网络IO、磁盘IO的问题。 如果是磁盘IO问题,一般问题是SQL语法问题、MYSQL参数配置问题、服务器自身硬件瓶颈导致IOPS吞吐率问题。

今天主要是讲解MYSQL 参数配置不合理导致在高并发下磁盘IO问题,而MYSQL整体监控优化方案后面会整理《如何轻量化MYSQL服务性能监控》文章出来。

1、 打开日志跟踪引起的磁盘IO问题
例如:MySQL的日志包括错误日志(ErrorLog),更新日志(UpdateLog),二进制日志(Binlog),查询日志(QueryLog),慢查询日志(SlowQueryLog)等,正常情况下,在生产系统或者压力测试环境中很少有系统会时时打开查询日志。因为查询日志打开之后会将MySQL中执行的每一条Query都记录到日志中,会该系统带来比较大的IO负担,而带来的实际效益却并不是非常大.

2、 SQL写法问题引起磁盘IO高
例如:曾经在做某一个项目时,在看到数据库磁盘IO使用率偏高,前端查询业务交易loadrunner显示事物响应时间偏长,通过监控工具抓取对应SQL,通过计划分析,发现该SQL 中使用distinct 又多表关联且是大表、然后使用order by,最终显示10笔数据,而在产生中间过程数据进行筛选时,使用的是临时表,并把数据放入临时表中,内存刚好设置不大,于是放到磁盘中导致IO偏高。
备注:MySQL在执行SQL查询时可能会用到临时表,临时表存储,MySQL会先创建内存临时表,但内存临时表超过配置指定的值后,MySQL会将内存临时表导出到磁盘临时表;

3、 MYSQL参数配置问题
MYSQL默认配置性能低下,只能通过并发下尝试调整参数配置来逐步优化数据库性能,2017年底根据公司要求配合帮助某一家银行业务系统做性能测试,因为测试环境硬件资源有限,我跟公司申请了几台过时的笔记本,然后根据生产环境软件版本等配置要求,进行模拟搭建性能测试环境,基础软件包含:MYSQL5.6 、centos7.2、tomcat7、 JDK1.7、redis。使用的是联想L421 笔记本当MYSQL数据库服务器、L440当tomcat应用服务器,压力测试工具loadrunner、并发用户100,压力测试业务场景:用户登录退出、相关票据信息查询、电子汇票交易流程等,在压力测试过程中发现部分交易在50用户并发时,数据库磁盘I0使用率都偏高,特别是写操作一直很高,例如测试登录退出交易,经监控数据库磁盘IO率一直偏高,如下案例分析讲解:

优化前

压力测试时,数据库磁盘IO使用率大于75%,响应时间1.6秒,通过NMON监控到的数据库资源使用情况,如下图一与图二:
图一:
1.png
图二
2.png

优化后

数据库服务器资源使用率:
图三
3.png
图四
4.png

优化内容

通过优化innndb等影响IO、内存的一些参数后,性能问题明显解决,优化参数内容,例如:innodb_write_io_threads、 innodb_read_io_threads、
innodb_flush_log_at_trx_commi等InnoDB 引擎优化IO 子系统参数配置若干。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSQL数据库服务磁盘IO高问题分析与优化 的相关文章

  • Spring学习心得(6)-- spring DI(依赖注入)

    DI的定义 给配置文件中的bean的属性赋值 方式 一种是利用其属性的setter方法 另外一种是利用构造函数 我们先来讨论第一种 利用属性的setter方法赋值 首先 先创建好类 并且配置到配置文件中 public class Perso
  • 基于上下文的推荐 -- 包括时间衰减算法和位置推荐算法(代码实现)

    基于上下文的推荐 基于时间特征的推荐 时间衰减 基于时间衰减的ItemCF算法 算法核心两部分 都加入了时间衰减项 以movielens数据集实现ItemCF 基于时间衰减的UserCF算法 以movielens数据集实现UserCF 基于
  • java怎么让按钮发挥作用,Java“周年”如何真正发挥作用?

    这是一个简单的错误开始的 我使用的YYYY不是对象的yyyy格式字符串SimpleDateFormat 但是我对使用格式错误的字符串的测试结果完全感到困惑 这段代码 Test public void whatTheHell try Simp
  • Linux——I/O复用(1)——select

    前言 TCP服务器的运行模型 TCP中 第一个客户端和服务器端建立连接 向服务器端不发数据 服务器端就在recv阻塞住 无法继续执行 如果有第二个客户端与服务器端建立连接 就在已完成三次握手的队列中放着 等着accept处理它 由于我们的代
  • 从 TDD 到 BDD

    转自http www cnblogs com lidaobing archive 2010 07 18 1779987 html 最近在学 ruby 也用了 rspec 传统的 xUnit 是 TDD 指导思想下的产物 而 rspec 则算
  • 本地上传文件到Gitee分支--傻瓜式教程

    废话不多说 在本地上传文件到Gitee分支按如下几个步骤走完即可 创建本地仓库 通俗一点就是任意文件夹都可以作为你的本地仓库 这里我在桌面建立了一个新建文件夹作为本地试验仓库 使用git init命令初始化仓库 初始化完成以后 本地仓库会生
  • ETL日志数据采集&商品数据采集

    01 结构化数据模型选择 理解 问题1 原生python中有没有数据库中的表类型 没有 问题2 我们一般会使用什么数据类型存储数据库中读取到的数据值 列表嵌套字典 记录数据和书写数据 非常方便 但是我们需要记住每一个键 字段 的含义 如果字
  • 基于OpenCV的气体泵扫描仪数字识别系统

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 综述 2012年iOS应用商店中发布了一个名为FuelMate的Gas跟踪应用 小伙伴们可以使用该应用程序跟踪汽油行驶里程 以及有一些有趣的功能 例如Apple Watc
  • 基于蜜蜂优化算法优化的卷积神经网络(CNN)图像分类——附代码

    目录 摘要 1 蜜蜂优化算法 2 卷积神经网络 CNN 输入层 隐含层 输出层 3 本文Matlab代码 摘要 本文通过蜜蜂优化算法 优化了卷积神经网络 CNN 中的超参数 主要是网络的权重和偏差等关键参数 使CNN可以达到更加优秀的性能表
  • 整数四则运算 (10分)

    练习2 9 整数四则运算 10分 本题要求编写程序 计算2个正整数的和 差 积 商并输出 题目保证输入和输出全部在整型范围内 输入格式 输入在一行中给出2个正整数A和B 输出格式 在4行中按照格式 A 运算符 B 结果 顺序输出和 差 积
  • kali 火狐访问不了网页

    问题描述 因为一些原因使用kali的firefox来访问一些东西 但是突然发现火狐出问题了 访问不了网页之类的了 问题解决 1 网卡问题 使用命令ifconfig查看自己的网卡有没有问题 有问题按顺序执行 dhclient r eth0 d
  • Pycharm连接远程服务器(图解、简洁高效)

    这不是最好的方式 但绝对是你首次使用和日后使用最快 最有效的方式 本文示例为 pycharm2021专业版 1 前提 你安装的是pycharm专业版 必要 为了方便你的开发 你的远程服务器创建了多个虚拟环境来运行多个不同的项目 非必要 但推
  • 看完这篇文章你就可以告诉领导你精通Zookeeper了

    一 Zookeeper概述 1 概述 Zookeeper 是一个开源的为分布式框架提供协调服务的 Apache 项目 在分布式系统中 扮演注册中心的角色 Zookeeper数据模型的结构与Linux文件系统很像 整体上可以看做一棵树 从根节
  • mono 编译

    git clone https github com mono mono git cd mono git checkout 3b34235086446239d81347d1ee35644c0f2c3369
  • uni.switchTab跳转失败的原因

    检查url是否是pages里面的tabBar注册的页面 路径前面必须以 开头 uni switchTab url pages cate cate success fail console log 失败了吗 没有这个 就会走到fail
  • JS数组去重的12种方法

    一 利用ES6 Set去重 ES6中最常用 Set对象是ES6中新定义的数据结构 类似数组 它允许存储任何类型的唯一值 不管是原始值还是对象引用 Array from 方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组 functi
  • Kubernetes基础2

    二进制部署kubenetes 1 环境介绍 角色 主机名 IP 备注 k8s master1 kubeadm master1 haostack com 172 16 62 201 k8s master2 kubeadm master2 ha
  • unity UGUI之Button按钮多种触发方式实现(有参无参函数)

    UGUI之Button按钮有多种触发方式 下面讲两种 第一种方法是在依靠属性面板绑定物体然后找到物体脚本上的方法触发 第二种是用纯代码的方式是用onClick方法 第一种 首先建立一个button 之后看button属性 如图右下角 那里的
  • 【DL】第 4 章:目标检测和图像分割

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore

随机推荐

  • 【HBZ分享】Redis的缓存雪崩+穿透+击穿如何解决

    缓存雪崩 现象 大量热点key设置了相同过期时间 导致同时过期 或 Redis宕机 使请求瞬间大量打到DB上 解决方案 1 搭建高可用集群环境 防止某台Redis服务宕机 2 存数据的过期时间设置随机数 防止同一时间大量数据过期 3 设置k
  • cmd命令查询硬盘序列号,磁盘ID,MAC地址

    查询单位计算机基础信息 需要查询 硬盘序列号 磁盘ID MAC地址等计算机相关信息 不需要专业的软件如AIDA 用cmd命令行就可以实现这些信息的查询 之前就经常把硬盘序列号和磁盘ID搞混乱 win r 输入cmd 打开cmd命令 1 硬盘
  • ABAP 访问REST服务设置Auth2的Token

    DATA json ser TYPE REF TO cl trex json serializer json des TYPE REF TO cl trex json deserializer DATA lv url TYPE string
  • Latex 希腊字母大写

    大写 小写 LaTeX 大写 大写 LaTeX A A quad alpha A A alpha N
  • 程序访问的局部性原理

    程序访问的局部性原理 程序访问的局部性原理包括时间局部性和空间局部性 时间局部性是指在最近的未来要用到的信息 很可能是现在正在使用的信息 因为程序中存在循环 空间局部性是指在最近的未来要用到的信息 很可能与现在正在使用的信息在存储空间上是连
  • OD华为机试 32

    组成最大数 描述 小组中每位都有一张卡片 卡片上是6位内的正整数 将卡片连起来可以组成多种数字 计算组成的最大数字 输入描述 号分割的多个正整数字符串 不需要考虑非数字异常情况 小组最多25个人 输出描述 最大的数字字符串 示例一 输入 2
  • elk 笔记15--mapping

    elk 笔记15 mapping 1 mapping 简介 1 1 什么是mapping 1 2 为何移除多type 2 mapping 数据类型 3 mapping 元字段 4 mapping 参数 5 动态 mapping 6 常见 m
  • 3.Unity Shader 基础

    目录 一对好兄弟 材质和Unity Shader Unity中shader ShaerLab Unity Shader 的结构 1 创建 2 Properties 3 SubShader 状态设置 RenderSetup SubShader
  • hive永久注册udf函数小例子

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1217 注册UDF函数 1 helloUDF java中package信息需要修改 代码如下 package com maven udf p
  • ChatGLM2_6b安装

    Chatglm2 6b安装 一 安装要求 1 硬件 能否使用 或者以什么模式使用主要取决于显卡的显存 2 能否使用AMD显卡 可以 甚至可以使用CPU 但是需要降低精度 以CPU模式运行大概需要32GB 内存 二 工程与下载 官方路径 工程
  • 遇到问题之-yum update无法连接镜像问题解决

    yumupdate出现无法解析的错误 查看yum源设置也正确 然后查看本机DNS无法解析 通过防火墙开放DNS端口解决 然后还是无法yum安装 查看另外一台服务器和故障机配置都相同 但是yum正常 发现两者不同的是load的mirror是不
  • 物联网mqtt消息格式定义示例

    物联网mqtt消息格式定义示例 物联网mqtt通信流程 消息定义 应用下发到云 POST https 云服务器ip iot product id device id cmd Content Type application json X A
  • Spring MVC应用的开发步骤

    Spring MVC应用的开发步骤 Spring MVC应用的开发步骤 如果以异步方式提交请求 利用XML配置文件 配置控制器类 Spring MVC应用的开发步骤 下面简单介绍Spring MVC应用的开发步骤 在web xml文件中配置
  • Frida hook Java层

    往期推荐 frida环境安装 Xposed框架安装 使用及插件开发 HOOK startActivity HOOK框架 动态代理 需要相关资料的朋友 可以 加入此处即可打包获取 需要对在进程外传递的消息进行拦截处理就必须采取一种称为HOOK
  • Hexo博客开发之——七牛云图片批量下载

    一 前言 基于hexo Github搭建的静态博客 图片等资源的存储是一个问题 之前考虑过图片保存本地文件夹 图床 qiniu 微博 等 但是七牛存储的图片会有一些问题 使得我不得不考虑领寻图片等资源的存储问题 1 1 七牛图片存储的问题
  • UE4 加载流关卡(StreamingLevel)

    主要内容 本文主要讲解流关卡的加载卸载以及使用流关卡的好处 使用流关卡的好处在于利于多人协同合作 例如使用SVN进行项目开发时 各自上传或修改各自负责的关卡可以互不干扰 实现步骤 1 新建一个默认的主关卡和两个空的关卡 2 在主关卡里把两个
  • 解决 Ubuntu18.10 无法安装 Nvidia-docker2

    2023年5月18日更新 nvidia 原 github io 网页已废弃 更新了新的主页链接 2022年8月10日更新 很高兴看到这篇文章能够帮助一些同仁 在此更新一下 根据 https nvidia github io nvidia d
  • iOS核心动画CoreAnimation系统进阶(赛贝尔曲线-菜单侧滑动画拆分动画详解)

    我们知道动画是基于绘制的 多次绘制贝塞尔的过程就会形成动画 流畅的动画效果会给用户带来不一样的使用体验 下面我们就让App开发中经常使用到的侧滑动画进行拆分详解 效果图如下 为侧滑动画封装一个slideMenuView 绘制侧滑动画需要下面
  • Raft协议处理各种failover情况

    Raft协议处理各种failover情况 Raft 协议的易理解性描述 虽然 Raft 的论文比 Paxos 简单版论文还容易读了 但论文依然发散的比较多 相对冗长 读完后掩卷沉思觉得还是整理一下才会更牢靠 变成真正属于自己的 这里我就借助
  • MYSQL数据库服务磁盘IO高问题分析与优化

    压力测试过程中 如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大 TPS逐渐降低等 而问题定位分析通常情况下 最优先排查的是监控服务器资源利用率 例如先用TOP 或者nmon等查看CPU 内存使用情况 然后在排查IO问题