13:52-14:03,由于访问量突增,博客web服务器全线CPU 100%,造成博客站点不正常访问,由此给您带来麻烦,请您谅解。
为了迎接访问量的增长给web服务器CPU带来的巨大压力,上周我们已经将博客web服务器换成了阿里云独享型服务器。
今天下午故障前,博客站点一共投用了3台4核8G+1台8核8G阿里云服务器。
13:50左右,为了防止4台服务器撑不住,我们使用阿里云的弹性伸缩服务,创建了一个根据CPU占用情况自动增加服务器的“报警任务”。
哪知刚创建完,访问量就突增上去了,负载均衡中有1-2服务器出现CPU 100%。由于弹性伸缩服务的“报警任务”刚创建,需要一些时间搜集数据,还没启动。即使启动,也需要2分钟搜集CPU报警信息。于是,我们赶紧创建弹性伸缩服务的定时任务增加服务器。
定时任务启动后,虽然增加服务器是自动进行的,但创建服务器、启动服务器、配置数据库访问控制、挂上负载均衡这些操作需要一些时间。
在等待增加服务器期间,CPU 100%问题如雪崩般。1台服务器出现CPU 100%一定时间,负载均衡健康检查失败,将这台服务器踢出。在同样的访问量下,负载均衡中的服务器变少了,这时CPU 100%更严重,更多的服务器CPU 100%,然后一台一台被踢出,直到剩下最后1台。根据阿里云负载均衡健康检查的策略,如果只剩下1台,即使健康检查失败,也不会踢出。但这时最后1台是否被踢出已经无关紧要,因为这台服务器的CPU根本顶不住,一直100%,博客站点访问全线503。
这时好想有一个紧急按钮——“停止健康检查,所有服务器给我硬撑,撑得住继续撑,撑不住也要继续撑”,如果真有这样的按钮,负载均衡中只会有部分服务器CPU 100%,不至于全线503,可以支撑到新增的服务器上线。
但是没有这样的紧急按钮,我们只能眼看着全线503,干等新增的服务器上线。。。
新增服务器上线后,博客站点很快恢复了正常。