前一阵子在服务器上更换、添加了硬盘后,感觉负载下降了一点、访问速度快了一点,但似乎还是不能令人满意,导入和更新数据的速度依然很慢,用户浏览也是有迟缓的感觉。

从Linux服务器上运行top观察,4枚4核的CPU总有空闲,高达64G或者48G的内存也很富余,磁盘IO占用也不算多,究竟问题出在什么地方呢?

我们以前就用iostat观察过硬盘io情况,一般都是在出现明显问题的时候,临时用iostat每隔1秒刷新来观察实时情况。前天开始我们用iostat -x 3600的命令让其3600秒(也就是1小时)为间隔来显示一段时间内的io情况,并对显示的参数进行详细分析。

其中一台服务器的记录数据如下:

avg-cpu: %user %nice %system %iowait %steal %idle

58.04 0.01 12.27 3.46 0.00 26.23

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.13 25.57 1.00 8.83 57.46 275.20 33.87 0.02 2.23 0.80 0.79

sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

sda2 0.13 25.57 1.00 8.83 57.46 275.20 33.87 0.02 2.23 0.80 0.79

sdb 1.91 79.34 35.24 38.33 367.15 944.26 17.82 1.57 21.35 3.89 28.62

sdb1 1.91 79.34 35.24 38.33 367.15 944.26 17.82 1.57 21.35 3.89 28.62

sdc 0.49 30.12 37.57 63.02 479.84 745.35 12.18 7.26 72.17 2.18 21.97

sdc1 0.49 30.12 37.57 63.02 479.84 745.35 12.18 7.26 72.17 2.18 21.97

sdd 4.37 49.90 120.98 48.33 3050.92 786.54 22.66 3.22 19.00 2.23 37.82

sdd1 4.37 49.90 120.98 48.33 3050.92 786.54 22.66 3.22 19.00 2.23 37.82

sde 1.27 37.83 23.70 24.45 280.60 498.29 16.18 0.68 14.09 2.93 14.13

sde1 1.27 37.83 23.70 24.45 280.60 498.29 16.18 0.68 14.09 2.93 14.13

sdf 0.89 7.69 17.47 8.97 540.73 133.26 25.49 0.03 1.29 0.56 1.47

sdf1 0.89 7.69 17.47 8.97 540.73 133.26 25.49 0.03 1.29 0.56 1.47

dm-0 0.00 0.00 1.12 34.40 57.46 275.20 9.36 0.05 1.43 0.22 0.79

dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

我们重点观察了await这个参数的情况,各个磁盘分析如下:

sda(1TB 7200转普通蓝盘,用作系统盘)2.23ms,利用率很低,没有瓶颈

sdb(1TB 7200转普通蓝盘,用作Squid和Drupal文件缓存)21.35ms,小文件数量大,存在瓶颈问题

sdc(300GB 10000转迅猛龙硬盘,用作主要数据库文件)72.17ms,导入文件期间排队等待明显,瓶颈突出

sdd(300GB 10000转迅猛龙硬盘,用作部分数据库文件)19.00ms,分出的网站访问量大,也存在瓶颈问题

sde(300TB 10000转迅猛龙硬盘,用作Apache目录和部分文件缓存)14.09ms,稍有瓶颈问题

sdf(64GB 固态硬盘,用作部分数据库文件)1.29ms,硬盘性能最好,存放数据不算太多,没有瓶颈问题

根据以上数据分析,拿出改善的办法如下:

购入更多高速硬盘,来分担现在的硬盘负载;

将繁忙的数据库文件分布在更多高速硬盘上;

将Squid和Drupal文件缓存放置在高速硬盘上,让小文件随机访问更快;

将需要很密集磁盘io的操作,例如数据导入、xmlsitemap生成、内部搜索索引生成逐个网站逐步实施,不要太集中,保证网站正常访问优先;

将需要很密集磁盘io操作的数据库临时迁移到性能最好的固态硬盘(甚至内存虚拟的硬盘)上进行,操作完毕再迁移到机械硬盘上去。

这次又购置了6块迅猛龙硬盘和2块固态硬盘,准备明天就安装到服务器上,元旦期间迁移数据,让网站在节后的访问更快速。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐