云计算之路-迁入阿里云后:问题的根源——买到她的“人”,却买不到她的“心”
这里的“她”指的是硬盘,“她的人”指的是硬盘空间,“她的心”指的是硬盘的IO能力。
自从使用阿里云以来,我们遇到了三次故障(一、二、三),这三次故障都与磁盘IO高有关。第一次故障发生在跑zzk.cnblogs.com索引服务的云服务器上,当时的Avg.Disk Read Queue Length高达200多;第二次故障发生在跑images.cnblogs.com静态文件的云服务器上,当时的Avg.Disk Read Queue Length在2左右;第三次故障发生在跑数据库服务的云服务器上,当时的Avg. Disk Write Queue Length达到4~5,造成很多的数据库写入操作超时。
(这里既提到“硬盘”,又提到“磁盘”,我们这样界定的:在云服务器中看到的硬盘叫磁盘[虚拟出来的硬盘],在集群中的物理硬盘叫硬盘)
这三次的磁盘IO高都不是我们云服务器内的应用引起的,最直接的证据就是将云服务迁移至另一个集群之后,问题立即解决。也就是说云服务器的磁盘IO高是因为它所在的集群的硬盘IO高。集群的硬盘IO是集群内所有云服务器的磁盘IO的累加,集群的硬盘IO高是因为集群中某些云服务器的磁盘IO过高。而我们自己的云服务器内的应用产生的磁盘IO在正常范围,问题出在其他用户的云服务器产生过多的磁盘IO,造成整个集群硬盘IO高,从而影响了我们。
为什么其他云服务器引起的硬盘IO问题会影响到我们?问题的根源就在于集群的硬盘IO被集群中的所有云服务器所共享,而且这种共享没有被有效的限制、没有被有效的隔离,大家都在争抢这个资源,同时争抢的人太多,就会排长多。而且对于每个云服务器来说,也不知道有多少台云服务器在争抢,从云服务器使用者的角度根本无法躲开这个争抢;就像在世博会期间,你起再早去排队,也得排超长的队。如果每个云服务器使用的硬盘IO资源是被限制或隔离的,其他云服务器产生再多的磁盘IO也不会影响到我们的云服务器;就像在一个小区,你一个人租了一套房子,其他的一套房子即使住了100人,也不会影响到你。
你可以买到CPU、内存、带宽、硬盘空间,你却买不到一心一意为你服务的硬盘IO,这就是当前阿里云虚拟化平台设计时未考虑到的一个重要问题。
经过与阿里云技术人员的沟通,得知他们已经意识到这个问题,希望这个问题能早日得到解决。