今天突然发现网站很慢,在服务器上看到负载已经达到5了,但是CPU使用率很低,iowait基本保持在100%。本来还以为是某个程序或中间件导致的问题,所以把memcache、mysql、nginx、php、svn、定时任务等等都停了,发现iowait仍然有时候会达到100%。
按照阿里云给出的磁盘IO测试方法对磁盘IO进行了测试
1 |
time dd if=/dev/zero of=/test.dbf bs=64k count=16k conv=fsync |
我在阿里云的服务器上执行之后我就震惊了,执行时间竟然用了29分钟,结果是每秒602KB,低的都不可理喻了,直接上图吧。。。
我在Macbook Pro的虚拟机上用同样命令测试磁盘IO的结果是用时13秒,每秒81.8M。
这个差距让我很不能够接受,于是马上联系阿里云的客服查找问题,阿里云的客服响应速度和服务态度应该说都不错,不过从下午三点多我向阿里云客服反馈问题开始,直到晚上九点半,问题仍然没有解决。
这期间阿里云客服说出现IO问题的原因是宿主机负载太高,所以要把我的服务器迁移到另一台宿主机上,于是关机迁移,大概十几分钟之后迁移完成了,进行测试问题依旧,不过比之前要稍微有些改善,整个测试用时19分21秒,每秒925KB。
于是阿里云客服要求我关闭服务器上的所有服务后再次进行测试,并强调阿里云是基于分布式文件系统的,跟虚拟机没有可比性。如果说基于分布式文件系统的阿里云为了平衡整体性能所以降低了IO读写速度,这个我还能理解,不过那些不能降成这样啊,这种读写性能连访问量不高的个人站长都无法接受,更不用说企业用户了。
另外,我的网站本来就是在阿里云上新建起来的,整体访问量并不高,应该不会对测试结果造成太大影响,不过仍然按照客服的要求关掉了除阿里云监测之外的所有服务。
再次IO测试后的结果为运行时间17分48秒,每秒1M。
我把结果再次反馈给阿里云客服之后,客服说会把情况反馈给后端的同事做排查,目前为止还没有新的反馈,问题依旧。如果有新的反馈我会在文章最后做补充,欢迎关注。
下面是我跟阿里云客服的对话截图:
你用的阿里云 哪里的节点???
我的是青岛的节点
真是醉了,i/o 1M怎么用呀
是呀,太慢了根本没法用,好在后来解决了
你的这个问题后来如何了??解决了没?
后来解决了,客服说虚拟机所在的物理机负载太高,把虚拟机迁移到其他服务器上去了,不过云计算的磁盘写入本来就不是特别快,只要不是特别慢就行了