以下消息来自LeanCloud官方:6 月 30 日晚上 8 点左右,我们的实时通信服务发生了故障,导致大量应用的终端用户无法登录和发送消息,时间持续约 40 分钟,详细情况汇总如下。 故障时间2016-06-30日 19:58 - 20:41(共计 43 分钟) 影响范围LeanCloud 国内节点的实时通信服务受到影响(无法登录和发送消息),其它服务正常;美国节点一切服务正常。 事故经过- 19:58 一组负责实时通信服务数据统计的缓存机器发生故障,导致用户登录或发送消息出现阻塞,类似操作开始消耗内部线程池资源;
- 20:05 线程池资源耗尽,所有用户登录过程都会失败;
- 20:22 确定了故障原因,开始重启缓存服务程序,但是服务程序所在机器因为压力过大失去响应,转而重启物理机器;
- 20:33 缓存服务恢复正常,登录和发消息等请求开始恢复正常(为了加速我们新增了部分实时通信服务程序,以增加响应能力);
- 20:41 实时通信服务恢复正常。
下图中的黄线是故障时段前后的登录请求数量变化趋势曲线,与上述故障时间线吻合:
后续改进措施- 聊天服务监控程序改由 Marathon 来自动部署并执行。该监控程序因前期的一次操作而被暂停,结果未能捕捉到此次服务异常,所以我们加入程序化的手段来保证其始终运行。(已完成)
- 增加对统计数据缓存服务的监控。(已完成)
- 增加对于登录请求数异常变化的监控。(已完成)
- 进一步优化实时通信服务的架构,针对所有环节做好容错,防止类似的阻塞操作再次出现。(一周内解决)
|