02-10~02-11 云代码故障说明

2015-02-10 20:23 ~ 2015-02-11 00:02 期间,云代码请求间歇出现 502 和 404 的情况,部分应用出现应用「应用未部署」的提示。

原因是由于使用我们服务的部分应用短期流量剧增,服务器承压,导致了以下几点问题:

中央文件存储(下面简称「存储」)异常:开发者的云代码应用是统一保存在存储上,然后挂载到各个云代码服务器。所以出现一个问题:所有静态请求加载资源文件时,都会走存储来获取。流量非常大时就导致存储大量出错,导致文件读取缓慢或者无法读取(最终造成 502 或者 404 响应)。这是我们初期设计考虑不周。
服务器容量和带宽不足:流量成倍增长导致服务压力破表,带宽打满。

故障期间我们做了什么:

故障开始时,我们收到服务器 load 过高报警,对流量确认后迅速对服务器和带宽进行扩容。
扩容后开始将应用分散到新的服务器,load 下降,压力缓和。
随后又出现一波压力,扩容后的服务器并没有出现预期的压力承受能力,load 又迅速升高。
经过排查,发现存储出现大量错误,随即开始迁移云代码应用,重新挂载存储。这个期间存储异常状况的出现很不稳定,导致我们花了很多时间和精力在迁移应用,此时会导致部分应用出现「应用未部署」的情况。
最后我们将流量大的应用的代码拷贝到服务器本地磁盘,让这些应用的静态资源流量不再走存储,压力才慢慢缓解。

故障后我们做了什么:

我们改进了云代码,尽量降低对存储的依赖:开发者部署应用时,会将项目代码从存储拷贝到服务器本地磁盘,应用运行期间都是用本地磁盘的代码。如果应用出现问题,别的服务器的备份服务也会从存储上拷贝代码到本地磁盘,并提供服务;存储我们也做了容灾处理。所以最坏情况假设存储彻底挂掉,所有正在运行的服务是不受影响的,只是在存储切换期间无法重新部署应用。

云代码服务器扩容:我们增加了很多的服务器。经过这次问题,我们也对云代码服务器的容量极限和压力基准有了更清楚的了解,后期根据此基准我们会更有预见性的扩容。

在此向所有在此次故障中受到影响的用户致歉,我们将以一如既往认真谨慎的态度,继续为开发者们服务。

02-10~02-11 云代码故障说明》上有1条评论

  1. Pingback引用通告: 2015 年 2 月上旬更新汇总 | LeanCloud Blog

发表评论

电子邮件地址不会被公开。 必填项已用*标注