知识大全 一个诊断案例(2)

Posted

篇首语:究竟什么是真理?——不可驳倒的谬误便是。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个诊断案例(2)相关的知识,希望对你有一定的参考价值。

高性能MySQL:一个诊断案例(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   一个诊断案例( )

       这里大多数符号(symbol)代表的意义并不是那么明显 而大部分的时间都消耗在内核符号(no vmlinux)和一个通用的mysqld符号中 这两个符号无法告诉我们更多的细节 不要被多个ha_innodb so符号分散了注意力 看一下他们占用的百分比就知道了 不管它们在做什么 其占用的时间都很少 所以应该不会是问题所在 这个例子说明 仅仅从剖析报表出发是无法得到解决问题的结果的 我们追踪的数据是错误的 如果遇到上述例子这样的情况 需要继续检查其他的数据 寻找问题根源更明显的证据

  到这里 如果希望从gdb的堆栈跟踪进行等待分析 请参考 节的最后部分内容 那个案例就是我们当前正在诊断的这个问题 回想一下 当时的堆栈跟踪分析的结果是正在等待进入到InnoDB内核 所以SHOW INNODB STATUS的输出结果中有 queries inside InnoDB queries in queue

  从上面的分析发现问题的关键点了吗?没有 我们看到了许多不同问题可能的症状 根据经验和直觉可以推测至少有两个可能的原因 但也有一些没有意义的地方 如果再次检查一下iostat的输出 可以发现wsec/s列显示了至少在 秒内 服务器每秒写入了几百MB的数据到磁盘 每个磁盘扇区是 B 所以这里采样的结果显示每秒最多写入了 MB的数据 然后整个数据库也只有 MB大小 系统的压力又主要是SELECT查询 怎么会出现这样的情况呢?

  对一个系统进行检查的时候 应该先问一下自己 是否也碰到过上面这种明显不合理的问题 如果有就需要深入调查 应该尽量跟进每一个可能的问题直到发现结果 而不要被离题太多的各种情况分散了注意力 以致最后都忘记了最初要调查的问题 可以把问题写在小纸条上 检查一个划掉一个 最后再确认一遍所有的问题都已经完成调查

  在这一点上 我们可以直接得到一个结论 但却可能是错误的 可以看到主线程的状态是InnoDB 正在刷新脏页 在状态输出中出现这样的情况 一般都意味着刷新已经延迟了 我们知道这个版本的InnoDB 存在 疯狂刷新 的问题(或者也被称为检查点停顿) 发生这样的情况是因为InnoDB 没有按时间均匀分布刷新请求 而是隔一段时间突然请求一次强制检查点导致大量刷新操作 这种机制可能会导致InnoDB 内部发生严重的阻塞 导致所有的操作需要排队等待进入内核 从而引发InnoDB 上一层的服务器产生堆积 在第 章中演示的例子就是一个因为 疯狂刷新 而导致性能周期性下跌的问题 很多类似的问题都是由于强制检查点导致的 但在这个案例中却不是这个问题 有很多方法可以证明 最简单的方法是查看SHOW STATUS 的计数器 追踪一下Innodb_buffer_pool_pages_flushed 的变化 之前已经提到了 这个值并没有怎么增加 另外 注意到InnoDB 缓冲池中也没有大量的脏页需要刷新 肯定不到几百MB 这并不值得惊讶 因为这个服务器的工作压力几乎都是SELECT 查询 所以可以得到一个初步的结论 我们要关注的不是InnoDB 刷新的问题 而应该是刷新延迟的问题 但这只是一个现象 而不是原因 根本的原因是磁盘的I/O 已经饱和 InnoDB 无法完成其I/O 操作 至此我们消除了一个可能的原因 可以从基于直觉的原因列表中将其划掉了

  从结果中将原因区别出来有时候会很困难 当一个问题看起来很眼熟的时候 也可以跳过调查阶段直接诊断 当然最好不要走这样的捷径 但有时候依靠直觉也非常重要 如果有什么地方看起来很眼熟 明智的做法还是需要花一点时间去测量一下其充分必要条件 以证明其是否就是问题所在 这样可以节省大量时间 避免查看大量其他的系统和性能数据 不过也不要过于相信直觉而直接下结论 不要说 我之前见过这样的问题 肯定就是同样的问题 而是应该去收集相关的证据 尤其是能证明直觉的证据

  下一步是尝试找出是什么导致了服务器的I/O 利用率异常的高 首先应该注意到前面已经提到过的 服务器有连续几秒内每秒写入了几百MB 数据到磁盘 而数据库一共只有 MB 大小 怎么会发生这样的情况? 注意到这里已经隐式地假设是数据库导致了磁盘写入 那么有什么证据表明是数据库导致的呢?当你有未经证实的想法 或者觉得不可思议时 如果可能的话应该去进行测量 然后排除掉一些怀疑

       返回目录 高性能MySQL

       编辑推荐

       ASP NET开发培训视频教程

  数据仓库与数据挖掘培训视频教程

cha138/Article/program/MySQL/201311/29696

相关参考

知识大全 一个诊断案例(3)

高性能MySQL:一个诊断案例(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一个诊断案例

知识大全 一个诊断案例(4)

高性能MySQL:一个诊断案例(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一个诊断案例

知识大全 Oracle诊断案例2 -SGA与Swap

Oracle诊断案例2-SGA与Swap  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  案例描述

知识大全 经典案例 财务管理系统(2)[2]

  这些方法反映了会计核算过程在会计核算过程中填制和审核会计凭证是开始环节登记会计帐簿是中间环节编制会计报表是终结环节在一个会计期间所发生的所有经济业务都要经这三个环节进行处理将大量的经济业务转换为系

恶性增资的案例

恶性增资的案例里森在新加坡任期货交易员时,巴林银行原本有一个“99905”的“错误账号”,1992年夏天,伦敦总部要求里森另设立一个“错误账户”,里森建立了一个“88888”错误账户。几周后,伦敦总部

知识大全 解析一个通过添加本地分区索引提高SQL性能的案例

解析一个通过添加本地分区索引提高SQL性能的案例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!今天

知识大全 一个表达式计算案例的设计和实现

问题由来  在我做过的一个针对网络设备和主机的数据采集系统中某些采集到的数据需要经过一定的计算后才保存入库而不是仅仅保存其原始值为了提供给用户最大的灵活性我设想提供一个用户界面允许用户输入计算表达式(

车上人员责任保险案例

车上人员责任保险案例车上人员责任险理赔案——究竟该赔哪一个【案例简介】不久前,王先生将其拥有的一辆桑塔纳轿车向保险公司投保了机动车辆保险,同时附加车上人员责任险。该车投保一个月后,由于发生交通事故,造

知识大全 经典案例 财务管理系统(7)[2]

    ——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>>  para:Ttable;  functionFindForm

知识大全 有没有法律节目 讲一个小故事 然后律师专家来分析解答案例 即能学习又有故事看 有这样的节目吗

有没有法律节目讲一个小故事然后律师专家来分析解答案例即能学习又有故事看有这样的节目吗今日说法;法治在线。讲一段哲学小故事,然后在分析。掩耳盗铃范氏逃亡的时候,有个人趁机偷了一口钟〔也就是古代的乐器〕,