当前位置: 首页 > news >正文

携程网瘫痪超8小时,可能故障原因分析

5月28日上午11时许,携程网突然陷入瘫痪,官方表示是由于携程部分服务器遭到不明攻击,而导致官方网站及APP无法正常使用。对于事故原因,社交网站和微信群中都有不同的猜测,主要包括数据库被物理删除、业务代码被删除或者安全漏洞。

\\

物理删除是指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的。如果携程的数据库被物理删除,那损失不可估量。不过,携程网已经明确表示数据库被物理删除纯属谣言,所有的订单数据都保存完整。从技术角度来看,物理删除的速度非常慢,携程那么多的数据在短时间内被删除的可能性不大。所以这一猜测基本可以被否认。

\\

另外一个猜测是业务代码被删除。一份疑似携程的内部邮件表示:『Croller中保留了上次编译后的版本,fat到prd环境所有Windows环境编译后的源代码被删除』,如果这份邮件属实,那基本可以确认此次事故是由于业务代码被删除引起的。业内某专业人士也赞同此观点 ,他认为携程数据库至少隔天多次备份,被删除的可能性不大。而由于代码每天都会上线并且有代码库,所以可能没有做备份。但如果只是线上代码被删除,那不太可能瘫痪这么长时间。

\\

那为什么这次的故障持续时间能这么长?InfoQ高效运维群的智锦发表了自己的看法:

\\
\

携程目前指向一个静态页面,所有动态网页都访问不了。有人问为什么从备份恢复这么慢?现在SOA架构的网站,都是由成百上千个应用子系统组成。平时真正经常发布的,可能就是不到20%的核心子系统。而且发布时都是做加法,很少完全重新部署一个应用,一旦遇到需要所有系统都需要重新部署的极端情况, 管理协调的问题,应用之间的依赖关系、还有很多平时欠下的技术债都集中爆发了,更不用说很多不常用的子系统,上线之后就没人动过,一时半会都找不到能处理的人。而且,在这样的高压之下,各种噪音和干扰很多,运维工程师的反应也没有平时灵敏。

\
\\

如果是代码被删除,那也就是说某个员工可能拥有携程大部分服务器的登录和操作权限。所以有人认为携程在安全审核和权限控制方面的流程存在问题。但也有人认为再完善的流程也有可能被钻漏洞,人品比技术更重要。

\\

如果把这次的故障比作一次地震,那这次灾难可能就是携程的『汶川地震』了。减少地震伤亡的一种有效做法是应急演练,同样,软件公司也需要灾难演练,以防不备之灾。中国移动的王晓征说道:

\\
\

浙江移动每年的大小演练有近300次,去年核心CRM系统在白天中午11点左右做整体切换,不到5分钟就全部完成了。浙江移动内部有一个故障参考手册,运维人员可以根据手册判断故障可能会影响到的业务,并根据影响到的业务确定相应的处理方案,最后会根据处理时间评定故障等级,并汇报给相应的负责人。针对大的故障,核心思路应该是先恢复,再修复。

\
\\

新浪微博的TimYang也从团队角度发表了自己的看法,他认为,出现故障后,虽然公司会有财务及形象上的损失,但是领导者这时候更多需要创造好的环境给工程师来解决问题,切记不要急于施加时间压力或者问责,不然最有能力去解决问题的一线工程师可能会因为压力过大而降低效率。

\\

截止发稿前,携程网已瘫痪超过8个小时,服务仍未全部恢复。此外,艺龙网也称遭到DDos攻击,接下来InfoQ将会重点跟进相关的故障事件,敬请关注后续报道。

\\

感谢徐川对本文的审校。

相关文章:

  • phpcms v9修改栏目描述的多行文本为编辑器方法
  • 黎活明给程序员的忠告(转)
  • C# 添加.DLL 出错的解决方法
  • HihoCoder第十周:后序遍历
  • NPM vs Bower 的区别
  • yii 10.16
  • Android开发模板------自己定义SimpleCursorAdapter的使用
  • 代码html
  • Php5.5新特性 Generators详解
  • js修改后没反应-看看是不是取的缓存
  • 新时代的“网盘模型”——够快云库
  • ADT下载地址整理(转)
  • IntelliJ IDEA 使用心得与常用快捷键
  • asp.net Session 一般设置
  • iOS UITableView的Section Footer添加按钮
  • 0基础学习移动端适配
  • DataBase in Android
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • github指令
  • JavaScript标准库系列——Math对象和Date对象(二)
  • nodejs实现webservice问题总结
  • Node项目之评分系统(二)- 数据库设计
  • vue中实现单选
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 初探 Vue 生命周期和钩子函数
  • 前端之React实战:创建跨平台的项目架构
  • 如何利用MongoDB打造TOP榜小程序
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用docker-compose进行多节点部署
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 用element的upload组件实现多图片上传和压缩
  • Java总结 - String - 这篇请使劲喷我
  • Spring Batch JSON 支持
  • 带你开发类似Pokemon Go的AR游戏
  • 组复制官方翻译九、Group Replication Technical Details
  • (3)STL算法之搜索
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)树状数组
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core引入性能分析引导优化
  • .net 发送邮件
  • .NET 药厂业务系统 CPU爆高分析
  • .Net 应用中使用dot trace进行性能诊断
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .vimrc 配置项
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians