IO相关的LAMP服务器性能瓶颈

我正在pipe理一个有一千个用户的大型LAMP服务器。 大约一个星期前,事情变得缓慢了,而且我看到IO延迟的唯一情况就大大增加 。 用户体验缓慢的页面加载,并且当我想要保存文件时遇到挂起的秒钟。

操作系统是CloudLinux,内核2.6.32。 最重要的是CageFS和cPanel的完美结合。 硬件是IBM X3630 M3,在硬件RAID 5 +备用驱动器中有11个驱动器。

我做了很多实验。 首先,我运行iotop -oaP来查看IO带宽是多less。 所有在最高位置结束的进程都是正常的LAMP服务。 这些似乎没有做更多的IO比他们应该 – 虽然我不知道服务器上的理想或正常的压力。 可悲的是我无法从IO延迟正常的时候访问sysstat信息,只有munin图。 另一方面,CageF应限制所有用户的活动。

所以我开始想,磁盘得到很多的IOPS,他们无法处理。 专有的megacli实用程序说没有故障的RAIDarrays,没有重build正在进行或任何exception。 运行sar几个小时,我经历了超过5000的IOPS,但是当系统的IOPS低于1K时,挂起仍然存在,所以我猜磁盘是好的?

我已经尝试过审计框架和系统开发,但都没有用(前者挂在整个系统,我不能得到太多的统计数据,后者根本没有工作)。

我现在正在做的是通过几个testing来比较我的微型笔记本电脑的速度与服务器。 这就是我发现的,虽然我可以在3-5秒内用我的笔记本电脑(带有一个小的,滞后的硬盘)创build100K文件,但服务器在20-30秒内完成。

 #!/bin/bash i=1 while (( $i < $1 )); do echo $i echo "foobartest" > tmp/iotest.$i (( i++ )) done 

这可能是由于服务器每秒提供50-100个HTTP请求,但奇怪的是,如果我观察terminal中的运行数字,有时会挂起几秒钟,然后才能创build下一个文件。

我目前正在做的事情是使用strace -T并parsing输出,看看每个系统调用挂了多长时间(因为我不能使用stap )。

我发现的是开放的,写作和复制比别人花费更多的时间。 所有这三个都是正常的,因为我想创build许多文件的内容 – 所以我真的不知道我可以在哪里前进?!

统计数据:

 open 26,8320000000 write 11,5165000000 dup2 7,0665500000 

注意:根据要求,我可以上传像sar等命令的输出。对不起,英文不好,现在是凌晨2点,当时没有人真的关心他/她的网站。 先谢谢你。

更新 :我们将电源从双〜400W改为双〜650W,我不再经历这种滞后。 但是,延迟仍然足以让人担心。

megacli showsummary a0输出显示megacli showsummary a0显示有问题的BBU:

 Hardware Controller ProductName : ServeRAID M5015 SAS/SATA Controller(Bus 0, Dev 0) SAS Address : xxxx FW Package Version: 12.12.0-0047 Status : Need Attention BBU BBU Type : iBBU Status : Replace Battery pack 

奇怪的是,如果我观察terminal中的运行数字,有时会挂起几秒钟,然后才能创build下一个文件。

这听起来像是你的RAID控制器上写caching。 你有写caching,是吗? (megacli showsummary a0)

特别是检查你的BBU是否仍然是最佳的。 在默认configuration中,失败/失败的BBU与没有写入caching相同。

看看iostat,看看硬盘忙碌的时候,事情发展缓慢时,上升到接近100%。

更多的信息,如底层文件系统也将是有帮助的。 张贴图表! 你拥有的一切! (好吧,大部分)