IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

MySQL服务器raid卡充放电导致的问题

Data & Architecture DBA 2010-09-26 22:24:02 累计浏览 3,736 次
本机暂存

     这是昨天一台mysql库出现的问题,load比平时高了几倍,show processlist也有大量active的会话,数据库响应应用端请求较慢。

    查看innodb status row operations部份:

    

 

    因为mysql数据库服务器raid卡充放电,由write back模式变成write through,写IO性能下降,由于innodb内部采用共享线程的模式,写将innodb内部允许的最大并发线程数撑满,导致前端大量的select查询也无法进行,上图中看到有902个查询进入队列。

    

    与上图中的16 queries inside InnoDB刚好稳合。

    淘宝大多数应用场景都是读多写少,当时通过top看到iowait并不多,刚开始想到的一个解决办法:

      我们是否能也将innodb内部的线程进行分组,独立的写线程组,独立的读线程组?

    后来跟同事的讨论中,发现了更多的细节,当raid卡由write back模式,变成write though模式时,写已经将磁盘IO能力耗尽,把读线程独立出来,也不能解决这个问题,读也会很慢。请看下面的监控图示:

    磁盘利用率:

    

    在OS层面监控到的io响应时间:

    

    如果真要独立,那得把写线程控制在一个比较低的水平,分得越细,应对波动时,可共享的资源少了,也是一种坏处。对于底层存储系统,好像没有太大的必要这样做。

    但随着SSD,Fusion-io硬件的引入或使用,innodb io线程增加,innodb_thread_concurrency等参数的调整是一个必然。

    对于使用了raid卡的服务器,大家是怎么解决这个问题呢?

同分类推荐文章

  1. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)
  2. 硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复 (2026-06-07 18:21:47)
  3. 如何在Hive SQL中构造临时表用于和其它的表做关联? (2026-05-29 20:07:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,197)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,352)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,108)
  4. Mysql监控指南 (累计阅读 21,261)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,297)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,011)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,484)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,629)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,557)
  10. 我对技术方向的一些反思 (累计阅读 11,264)