《停机维护时长缩短5倍,全靠这3个秘诀》要点:

本文介绍了停机维护时长缩短5倍,全靠这3个秘诀,希望对您有用。如果有疑问,可以联系我们。作者:朱志武

腾讯游戏高级运维工程师,腾讯学院讲师.2013年入职腾讯,专注游戏的运维工作,关注用户体验以及对运维工作的知识沉淀.

只需3步,看我们是如何把一款国内排名前3的端游停机维护时间从1.5小时优化到0.3小时.

1、背景介绍

端游的停机维护是游戏的业务运维负责,定期的停机维护本身是枯燥的.

为了不那么寂寞,我们有着一颗“每次都比上一次好一点”的心.每次维护后都输出总结,总结踩过的坑,思考可以提升的点.

就这样,经过数十次的维护变更,我们把停机维护的维护时间从1.5小时优化到0.3小时.同时总结了一套提升停机维护效率的经验.

这个经验不仅仅适用端游的停机维护,同样适用手游、Web、ERP等环境的停机维护和变更.

2、停机优化(1.5小时→0.3小时)

接下来将从“流程优化”和“重命名式更新方式”两个维度来解读.

2.1 流程优化

以前我们游戏的停机维护时间差不多是1.5小时,后来我们对着维护的CHECKLIST,在思考:

这一步为什么要放在停机的关键路径里,我能否把他放到停机前10分钟完成呢?

或者是我能否推迟到开服后再去做一些检查项呢?

Checklist是停机维护前梳理的本次停机维护操作的事项,执行时严格按照次序执行,最简单的Checklist是基于EXCEL,好一点是把Checklist线上化,再好一点是有一套自由编排的停机维护系统,流程走到那一步时自动执行对应的操作.

2.1.1 剖析停机关键路径

剖析原来停机期间的关键步骤,以节省停机时间为目的,将可以提前做的事情(如提前变更配置)和延后做的事情(如版本校验)脱离出停机流程.

以下是流程优化前后停机关键路径的变化

来看一个动画版的,更生动一些

可以看到之前很多在停机关键路径的步骤分离到停机前关键路径和停机后关键路径.

就是这样一个小的手术,我们来看看每个环节都节省了多少时间.

2.1.2 收益对比

以下是我们梳理的每个环节节省的停机时间

总的来看,通过流程优化,我们把原来的停机维护时间从 1.5小时优化成0.5小时.

经过流程优化之后,发现停机维护还需要半小时,还能不能再快一些呢?

2.2 重命名式更新

我们原来的服务器补丁更新方式是类似cp的方式,这种方式会真的复制十几 G的游戏资源文件,非常恐怖.

除了慢以外,几千台服务器并发执行时,经常有几百台因为I/0问题,无法及时响应执行结果.

2.2.1 为什么不用mv的方式呢?

众所周知,在操作系统中,对目录名的修改(MOVE)只是在文件系统中改个名而已,数据块本身不会修改.

而对目录或文件的复制(COPY)会切切实实的修改对应的数据块,会耗用很大的I/O资源.

要知其所以然,所以我们要再深入一些.

2.2.1.1 Linux平台对目录的MV 和 CP的差别

我们先来做一个对10G文件cp和mv的耗时测试,算了下差不多是3万倍.

为什么相差这么大呢? 这个要说说Linux的文件系统.

对于cp来说,inode和对应的data blocks都会重新创建,而mv仅在目录中修改对应的名称而已,inode不会变.

(注:ls –i可以查看文件的inode,上图可以看到cp会改变inode,mv不会.)

原因是目录中保存inode和文件名的对应关系(详见Wikipedia的Inode).

于是我用组合命令展示这个对应关系的结构应该是这样的:

反正有时间,接着在展开一下.刚刚我们在查看目录时发现有. 和 .. 文件(Linux中目录也看作是文件),目录的硬链接数和这个也有关系.

ls 命令的-l参数结果中有一项是硬链接数:

这个在stat中找到(详细在Wikipedia的Hard link ).

由于指向同一个文件的所有硬链接inode号是一样,我们通过实验来论证这一点.

简单看,你创建一个目录,他的硬链接数是2,在这个目录下创建1级子目录,该目录的硬链接会+1 ,看起来是一个目录的硬链接是一级子目录数量+2.(小声说,这个是我猜的,没找到官网说明.)

另外这个是在不允许目录创建硬链接的前提下,Wikipedia的Hard link提到现代的操作系统不允许目录创建软链接,但UNIX System V是可以的).

说完目录是inode 和 文件名的对应表后,我们再扩展1个小知识.

如何删除文件名是乱码的文件?

那我们可以找到它对应的inode号,然后用find删除他.

好吧,这里只是简单概述,大家想深入的话,可以了解Linux的文件系统.

扩展阅读:

(1) debugfs恢复linux下删除文件(debugfs配合dd命令)

(2) inode在内核中定义的structure

(3) 硬盘的结构原理

2.2.1.2  Windows平台对目录的MV和CP的差别

Windows平台也非常类似,以NTFS文件系统为例.

NTFS文件系统中,目录的名字存储在MFT(主文件表)中的File Name Attribute (FN)里,所以在同一个文件系统(通俗的讲,就是分区,D盘、E盘)内,修改目录的名字不会进行真正数据区的变动,秒级可以完成.

说完两个平台里对目录改名在文件系统中的变化后,我们来看看在停机维护中如何利用这个特性呢.

2.2.2 停机维护前的准备操作

停机维护前,把当前运行的业务目录CURRENT rsync同步到临时目录OLD,再把更新补丁覆盖到临时目录OLD,之后改名为NEW(就是明天要发布的版本目录).

2.2.3 停机维护时的重命名操作

停机维护时,只需一个重命名的操作.

把业务目录CURRENT改名为OLD,NEW改为CURRENT.

So easy!

动画版的,可能更容易理解.

2.2.4 效率提升8倍

停机维护时单台服务端补丁的更新只需要1秒,原来可是需要20分钟.

由于几千台服务器更新存在3分钟左右的队列时间,所以实际的服务端补丁更新时间从25分钟降到了3分钟,效率提升了8倍.

3、方法论沉淀

漂亮的搞定问题后,我们需要静下来思考,是否能有方法论可以沉淀.

流程优化,我们在游戏运营规范里要说明,让业务运维详尽分析你的停机维护CHECKLIST,去思考这些步骤为什么一定要在停机时完成,能否变通的把他放到停机前完成,又或是停机后.

“重命名式更新”,我们在游戏运营规范里要说明,你的更新方式是否是最优的,耗时最少的.能否在更新前就已经准备好.

我们不能一味的只是完成停机维护操作本身,否则难以体现运维的价值.我们不要做搬运工.

停机优化,通过“流程优化”和“重命名式更新”,我们把停机维护的时间从1.5小时蜕变成0.3小时.相信你也可以,赶紧行动吧!

文章出处:高效运维

php性能提升5倍的秘诀,停机维护时长缩短5倍,全靠这3个秘诀相关推荐

  1. 查询时长下降10倍!网易有数 BI 物化视图设计要点与内部实践

    原文:查询时长下降10倍!网易有数 BI 物化视图设计要点与内部实践|数据库|sql|网易_新浪新闻 导读众所周知,BI 工具因其灵活的使用方式和便捷的结果展示,已成为生产运营和辅助管理决策的重要工具 ...

  2. 点击率增50%,时长增3倍,映客直播AI实践(附PDF)

    2018杭州云栖大会,[友盟+]数据智能专场中,映客直播内容推荐高级总监陈雪峰,对映客直播的推荐体系和AI技术应用做了详细介绍. (映客直播内容推荐高级总监陈雪峰) 映客作为全新的流量分发平台,在诞生 ...

  3. Kunpeng BoostKit 使能套件:大数据场景如何实现“大鹏一日同风起”倍级性能提升?

    文章目录 前言 一.开源大数据与鲲鹏多核结构渊源 1.1.海量数据处理的难题 1.2.大数据并行计算特点天然匹配鲲鹏多核架构 二.开源大数据整体与组件介绍 2.1.大数据组件:Hadoop-HDFS ...

  4. weidl x DeepRec:热门微博推荐框架性能提升实战

    微博推荐团队:陈雨.韩楠.蔡小娟.高家华 1.项目背景 热门微博是新浪微博的重要功能之一,包含热门流.热点流.频道流.小视频后推荐.视频社区等场景. 标推荐首页 发现页推荐 沉浸视频题 weidl机器 ...

  5. 大叔也说并行和串行`性能提升N倍(N由操作系统位数和cpu核数决定)

    并行是.net4.5主打的技术,同时被封装到了System.Threading.Tasks命名空间下,对外提供了静态类Parallel,我们可以直接使用它的静态方法,它可以并行一个委托数组,或者一个I ...

  6. 深度干货!如何将深度学习训练性能提升数倍?

    作者 | 车漾,阿里云高级技术专家 顾荣,南京大学副研究员 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 近些年,以深度学习为代表的人工智能技术 ...

  7. 性能提升3倍的树莓派4,被爆设计缺陷!

    整理 | 屠敏 转载自CSDN(ID:CSDNnews) 一直以来,素有世界最小电脑之称的 Raspberry Pi(树莓派)是一种独特的存在.它不仅只有一块信用卡般的体积,还具备主机电脑所具备的功能 ...

  8. AAAI 2020 | 滴滴东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍...

    点击上方"视学算法",选择"星标" 快速获得最新干货 2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办.不久之前,大会官方公 ...

  9. kettle性能及效率提升_开发人员掌握了这个技术,SQL效率会有几百倍的性能提升...

    完成相同业务逻辑的SQL,写法不同,执行效率可能会有几百上千倍的差距,今天我们通过几个案例来说明一下: case1 : 原sql代码如下(执行时间1.2分钟): with holder_clear_t ...

最新文章

  1. OpenCV中检测ChArUco的角点(2)
  2. C# GDAL 学习一
  3. Mat 显示到MFC中Pictrue Control的问题
  4. java中用字节流读取文本时中文乱码
  5. 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)
  6. C#开源项目:SiMay远程控制管理系统
  7. [19/03/21-星期四] 异常(Exception) (一)
  8. java session 详解
  9. ASP.NET MVC 4 小项目开发总结
  10. Vue调用本地缓存(监视数据变更)
  11. Ehcache缓存配置和基本使用
  12. SQL中的join连接
  13. ElemengUI:轮播图组件高度设置为全屏
  14. StanfordDB class自学笔记 (7) SQL
  15. 笔趣阁小说TXT采集软件工具
  16. 【变色龙】app封装系统源码+互站在售封装系统
  17. 【VMware16的安装以及安装Linux教程(超详细上)
  18. 今日学习在线编程题:小码哥的序列
  19. 在连接至 Steam 服务器时发生了一个错误。请稍后重试。
  20. 程序人生 - 如何绘制二维码?

热门文章

  1. 在建工程的管理是怎样在总帐中实现
  2. 协同OA对业务和管理进行流程的梳理
  3. 我所认识的SAP系统
  4. 转型会员制,云集能否讲好电商下半场故事?
  5. smarty能创建 php页面,php+smarty生成静态页面详解
  6. java 软引用_Java中弱引用和软引用的区别以及虚引用和强引用介绍
  7. 高并发 python socket send 异步_对于Python中socket.listen()与多线程结合的困惑?
  8. html中index.css里面写什么,css中z-index是什么意思?
  9. android+note2+分辨率,魅蓝Note2的屏幕尺寸是多少?魅蓝Note2的分辨率是多少?
  10. Python 中浅拷贝的四种实现方法