背景:

  晚上,公司业务群里发信息说,有玩家在游戏里面赠送别人礼物后,赠送记录在20多分钟以后才出现,延时太高。

问题:

  公司数据库使用mysql,配置了主从。配置的是,游戏程序写数据到主库,读数据到从库。

  数据库服务器主:A

  数据库服务器从:B

  1.首先查看了A主上面的赠送记录的库,发现都是正常的。然后查看B从上面赠送记录的库,发现有几个表没有通过过来。

  2.在B从上面查看,从数据库是否正常:  show slave status\G;发现如下问题:

  

根据上面圈出来的参数发现:主从存在延迟,主库执行到了mysql-bin-000077,而从库才执行到mysql-bin-000070,也可以从执行的位置,上面两个_POS看出来有延迟,根据Seconds_Behind_Master发现,大约有365360的延迟。

由上面分析可以发现,从库B虽然已经从主库拉取了所有的binlog,但是执行却没有完成。

show processlist;发现Slave_SQL线程处于:Reading event from the relay log.

经查找发现:由于主库可以并发执行,而从库只有一个slave_sql线程来进行执行,所以当事务多的时候,从库来不及处理就会出现以上情况。

查找是哪些资源到了瓶颈:

top发现,loadavg平均在1.7左右,内存,cpu都没有异常。cpu行中的wa%却有些偏高。'状态列'有一个程序处于D状态,即不可终端的睡眠。状态D,一般是由于wait IO造成的所谓“非中断睡眠”。

用iostat, $iostat -x 1 10   发现IO utils%一直出于70%-99%之间,发现是系统IO达到了瓶颈。

用iotop查看是哪些进程在频繁的进行IO操作,发现是mysqld和jdb2/dm-2-8

进行相关的优化:

由于主数据库上面也有IO瓶颈,同样是上面两个进程。

进入mysql查看show processlist,发现有1500多个任务,大部分处于sleep状态。(发现了之前公司业务发的,有些玩家登录不上游戏的原因,( ╯□╰ )),mysql配置中,max_connection最大连接数设置的才只有2000,所以很容易到达,然后满了后玩家就进不来了。

对于sleep任务太多的处理:(1)程序里每次连接数据库后,记得关闭数据库。(2)或者,在mysql配置文件中,设置mysql超时时间wait_timout,默认是八小时,设置低一点。

mysql io过高的更多相关文章

  1. iotop,pt-ioprofile : mysql IO负载高的来源定位

    http://www.cnblogs.com/cenalulu/archive/2013/04/12/3016714.html 前言: 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(i ...

  2. MYSQL的硬盘IO过高引起的CPU过高判断

    其实,为客户提供相关日志,不就是RACKSPACE主要作的事? 俺们以后也可以效仿的.不要去解决,而是协助客户定位. http://blog.const.net.cn/a/17275.htm 上文的思 ...

  3. MySQL占用IO过高解决方案【转】

    1.日志产生的性能影响: 由于日志的记录带来的直接性能损耗就是数据库系统中最为昂贵的IO资源.MySQL的日志包括错误日志(ErrorLog),更新日志(UpdateLog),二进制日志(Binlog ...

  4. MySQL数据库的优化(下)MySQL数据库的高可用架构方案

    MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...

  5. IO负载高的来源定位

    前言: 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的util),但是无法快速的定位到IO负载的来源进程和来源文件导致无法进行相应的策略来解决问题. 这个现象在MySQ ...

  6. IO负载高的来源定位 IO系列

    http://elf8848.iteye.com/category/281637 前言: 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的util),但是无法快速的定位到 ...

  7. 浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...

  8. Linux系统 磁盘IO过高排查总结

    最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法.此次排查原因的经验可以作下次问题的参考. 1.会看懂 top 系统命令出来的各项参数.此次是无意中发现 u ...

  9. mysql服务器iowait高优化一例完整深入解析

    我们有一服务器,上面运行着两个mysql实例,这几天iowait一直很高,在20-30%,下午特地专门排查和解决了下,相关过程整理如下. 该服务器有两个挂载盘,服务器在阿里云上,一个系统盘,一个数据盘 ...

随机推荐

  1. golang mcall

    // func mcall(fn func(*g)) // Switch to m->g0's stack, call fn(g). // Fn must never return. It sh ...

  2. zookeeper 选举机制 和 eruake

    zookeeper简介: 在分布式环境中,多个服务之间协调一致.有提供分布式锁.服务配置.实现分布式领域CAP(consistency一致性,Availiablity高可用,patition tolr ...

  3. Java基础29-子父类中的成员变量

    /* 成员: 1.成员变量 2.函数 3.构造函数 变量: this 代表当前对象的引用 this.变量 首先在本类中找所需要的变量,如果没有找到再父类中找. super 用于访问当前对象的父类成员, ...

  4. sencha touch dataview 中添加 button 等复杂布局并添加监听事件

    config 中的属性默认都会自动生成   getter   setter  applier  updater 四个方法. applier 在调用  setter 时被调用, updater 在属性值 ...

  5. D3介绍

    D3介绍 D3是用来做web页面可视化的组件,其官方网址为http://d3js.org 安装 D3类库的文件只有一个d3.js.下载后直接在html的<script>标签中引用此js就可 ...

  6. log4j DailyRollingFileAppender, DatePattern 配置

    在DailyRollingFileAppender中可以指定monthly(每月). weekly(每周).daily(每天).half-daily(每半天).hourly(每小时)和minutely ...

  7. Golang教程:goroutine协程

    在上一篇中,我们讨论了并发,以及并发和并行的区别.在这篇教程中我们将讨论在Go中如何通过Go协程实现并发. 什么是协程 Go协程(Goroutine)是与其他函数或方法同时运行的函数或方法.可以认为G ...

  8. java中wait和notify的关系

    java中,wait和notify这两个方法是一对,wait方法阻塞当前线程,而notify是唤醒被wait方法阻塞的线程.     首先,需要说明的是,wait和notify方法都是Object的实 ...

  9. 【转】Javascript中理解发布--订阅模式

    Javascript中理解发布--订阅模式 阅读目录 发布订阅模式介绍 发布---订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时 ...

  10. linux创建日期文件名

    linux创建文件名添加当前系统日期时间的方法 使用`date +%y%m%d` Example: mkdir `date +%y%m%d` tar cfvz /tmp/bak.`date +%y%m ...