前几天发生了2件神奇的事情:一是1位园友在阿里云上遇到了和我们一模一样的“黑色1秒”问题;二是阿里云推出了IO优化的基于KVM架构的服务器,据说理论上可以解决“黑色1秒”问题。很巧的是,这2件事情竟然开始于同一天。
“黑色1秒”问题是我们在阿里云上遇到的最神妙莫测,也是折磨我们时间最长的一个问题。它于2014年5月8日被发现,一直折磨我们到现在,这一年多我们只能依靠“每天重启应用程序”过着云上的“幸福”生活。
(“黑色1秒”最显著的特征:QPS为0)
折磨我们到现在,我们也与之斗争到现在。虽然我们曾经信心满满地怀疑——黑色1秒,微软的问题还是阿里云的问题?,但我们依然没办法百分百确认与我们的应用程序无关,因为之前没有在阿云上发现遇到同样问题的第2位用户。用尽各种招式之后,我们只剩最后一招——借着.NET跨平台的东风,等.NET Core/ASP.NET 5推出后,将Web服务器由Windows换成Linux,来验证“黑色1秒”是否是应用程序有关。当然,这一招也是非常艰苦的一招,要大量修改应用程序的代码,要等跨平台.NET的推出,我们预计至少需要一年的时间。
同时,阿里云也一直与之斗争。开始投入很多力量优化Xen,“黑色1秒”依旧;接着把Xen换成KVM,“黑色1秒”还是依旧;后来推出带SSD临时磁盘的云服务器,“黑色1秒”继续依旧。。。
正当“黑色1秒”问题的解决没有一线希望,正当准备与“黑色1秒”打一场待久战时,开头说的2件神奇的事情降临了。
当得知第2位阿里云用户遇到了与我们一模一样的“黑色1秒”,我们就无需采用最后一招去验证了。这个问题已经不是我们可以解决或者可以帮助解决的,只能等阿里云去解决。
当得知阿里云推出了有望解决“黑色1秒”问题的新服务器,我们终于等到了一次来之不易的希望。立马部署新服务器进行验证。
昨天13:30左右,新服务器上线。根据之前的多次观察,“黑色1秒”在程序持续运行24小时后必然出现。
今天13:30之后,进行着紧张的观察。13:40没出现“黑色1秒”,13:50没出现“黑色1秒”,14:00也没出现“黑色1秒”。。。但我们还是不敢轻易确认“黑色1秒”问题已解决。因为曾经的一次一次希望落空记忆犹新。
一直观察到15:00,QPS一直很稳定,没有出现一次QPS为0的情况。
这时我们才敢相信这一次幸福真的来了——“黑色1秒”终于问题解决啦!云上真正的幸福生活开始啦!