在RAID1configuration中有两个完全相同的SSD的服务器中IO速度较慢,导致性能问题。 通过使用“atop”注意到光盘的使用甚至没有:
DD | md2 | busy 0% | read 0 | write 1717 | MBr/s 0.00 | MBw/s 0.58 | avio 0.00 ms | DSK | sdb | busy 99% | read 0 | write 842 | MBr/s 0.00 | MBw/s 0.58 | avio 11.8 ms | DSK | sda | busy 11% | read 0 | write 1058 | MBr/s 0.00 | MBw/s 0.58 | avio 1.01 ms
问题是什么原因呢? 为什么sdb的使用率要高得多? 我已经注意到在less数服务器上的相同问题,所以它们都不太可能都有错误的sdb。 此外,通过使用hdparm检查光盘信息,以确保它们是相同的。 另外,它只发生在运行生产MySQL服务器的服务器上。 我试图通过简单地写入和读取分区来重现这个问题,但我无法以这种方式重现相同的结果。 感谢您的build议。
[root@CentOS-67-64-minimal ~]# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[1] sda3[0] 232753344 blocks super 1.0 [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 524224 blocks super 1.0 [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 16777088 blocks super 1.0 [2/2] [UU] unused devices: <none> [root@CentOS-67-64-minimal ~]# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 28484 MB in 2.00 seconds = 14263.62 MB/sec Timing buffered disk reads: 1096 MB in 3.00 seconds = 365.15 MB/sec [root@CentOS-67-64-minimal ~]# hdparm -tT /dev/sdb /dev/sdb: Timing cached reads: 21656 MB in 2.00 seconds = 10841.67 MB/sec Timing buffered disk reads: 14 MB in 3.95 seconds = 3.54 MB/sec [root@CentOS-67-64-minimal ~]# iostat -x 1 Linux 2.6.32-573.3.1.el6.x86_64 (CentOS-67-64-minimal) 2015.11.20 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8,96 0,13 4,22 3,93 0,00 82,75 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sdb 0,06 383,28 0,22 164,10 20,26 4275,72 26,15 2,26 13,76 3,21 52,79 sda 2,01 329,12 1,50 218,25 168,39 4275,72 20,22 0,17 0,77 0,35 7,71 md0 0,00 0,00 0,00 0,00 0,01 0,00 8,00 0,00 0,00 0,00 0,00 md1 0,00 0,00 0,00 0,00 0,01 0,00 7,62 0,00 0,00 0,00 0,00 md2 0,00 0,00 1,75 546,03 172,42 4274,38 8,12 0,00 0,00 0,00 0,00
MadHatter编辑 :
这是我的iostat
输出在很轻的负载下; 注意sdb主轴上的%util(你可以在提示符中用不同的主机名区分我的输出和Nerijus',并且我将把我的编辑保留在(上面)行之下):
[me@lory ~]$ iostat -x 1 [...] avg-cpu: %user %nice %system %iowait %steal %idle 0.25 0.00 0.50 0.00 0.00 99.25 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sdb 0.00 0.00 0.00 4.00 0.00 20.00 5.00 1.00 272.50 250.00 100.00 sda 0.00 0.00 0.00 4.00 0.00 20.00 5.00 0.07 17.75 17.75 7.10 md1 0.00 0.00 0.00 5.00 0.00 40.00 8.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 4.00 0.00 32.00 8.00 2.51 272.50 250.00 100.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 md0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
这里是我的hdparm
输出:
[me@lory ~]$ sudo hdparm -tT /dev/sda One-time password (OATH) for `me': /dev/sda: Timing cached reads: 1730 MB in 2.00 seconds = 864.60 MB/sec Timing buffered disk reads: 436 MB in 3.00 seconds = 145.12 MB/sec [me@lory ~]$ sudo hdparm -tT /dev/sdb /dev/sdb: Timing cached reads: 1580 MB in 2.00 seconds = 789.63 MB/sec Timing buffered disk reads: 14 MB in 8.43 seconds = 1.66 MB/sec
我也可以确认我的/proc/mdstat
指出没有重新同步,停止mysqld
不会使问题消失。
我看到的可能的原因:
hdparm -tT
不会给你真正的结果,它是缓冲的,并不总是像我们预期的那样透明,没有必要公开内部磁盘如何工作,特别是在2秒内。
可能,他们很好。
我们已经知道你的SBD不健康,这是我的答案。 看一下,你需要得到这样的一个值(在3个不同的服务器在高I / O生产testing)
1-Timing buffered disk reads: 560 MB in 3.00 seconds = 186.43 MB/sec 2-Timing buffered disk reads: 276 MB in 3.09 seconds = 89.23 MB/sec 3-Timing buffered disk reads: 326 MB in 3.00 seconds = 108.66 MB/sec 5-Timing buffered disk reads: 528 MB in 3.00 seconds = 175.97 MB/sec 6-Timing buffered disk reads: 528 MB in 3.00 seconds = 175.94 MB/sec
所以你的1.66 MB到目前为止,然后在你的系统上产生过载。 我希望它有帮助!