這里的“她”指的是硬盤,“她的人”指的是硬盤空間,“她的心”指的是硬盤的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,這就是當前阿里雲虛擬化平台設計時未考慮到的一個重要問題。
經過與阿里雲技術人員的溝通,得知他們已經意識到這個問題,希望這個問題能早日得到解決。