0

0

运维稳定性问题的关键–可用性

WBOY

WBOY

发布时间:2024-03-27 18:11:20

|

1457人浏览过

|

来源于Linux就该这么学

转载

复盘更多的是基于事后的总结与提升。那么我们如何发现、测量稳定性问题呢?那么我们就需要请出今天的主角了——可用性。

什么是可用性?

可用性作为评价业务稳定性的一个重要指标,它可以通过数据量化、建立基线的方式来发现业务中存在的周期性问题,并由此更有针对性的进行服务质量改进。

那么,什么是可用性呢?可用性是指在一个指定的时间间隔内,对于一个功能个体来讲,总的可用时间所占的比例。换句话说,是指在指定的时间段内,系统能够正常运行的概率或占比。对于我们现在的互联网业务来说大部分都属于「实时」、「在线」,即Real-Time Online System,实时在线系统。对于我们的大部分业务说上面所指的指定时间段,应该就是7*24小时。

可用性的结果经常使用小数点或者百分比表示。我们通常使用一个被称为几个九的度量,对应小数点后连续9的个数。比如,“五个九”就是指该系统在指定时间段内有0.99999(或者99.999%)的可用性。

怎么理解对应的量级呢?

比如,某系统在一个指定的时间段内,如1天,即24小时。同时我们的监测粒度是分钟,即1440分钟。在我们监控的1440分钟内,系统正常运行了1430分钟。那么在这个指定的时间段内,该系统的可用性即为1430/1440≈0.99306(99.306%)。也就是我们常说的2个9。

那么,99.306%这个值就代表该系统处于正常可用的Availability状态占比,那么1-99.306%得到的0.694%这个值就代表该系统处理异常不可用的Unavailability状态占比。简单的罗列为公式,即为:

业务在线总时长 = 业务的正常可用时长 + 业务的异常不可用时长

更进一步,可用性就是指:

可用性=业务的正常可用时长 / 业务在线总时长

运维稳定性问题的关键–可用性

如何建立可用性

理解了什么是可用性,接下来我们讲一下如何建立可用性。建立可用性的方法有很多,常见的方法有几种:

拨测法

拨测法即是按照各业务的应用、功能、模块进行周期性测试其运行状态是否正常的一种方法。

举例:我们业务有一个名为A的模块,那么就周期性的(比如,每5分钟一次)对这个模块使用模拟用户行为的方法对其运行状态进行抽样检查。如果该模块运行正常,就记为Availability,如果为非正常,就记为Unavailability。累加至一个时间周期内(比如,1天)Availability状态的占比即是这个模块的可用性。

Ztoy网络商铺多用户版
Ztoy网络商铺多用户版

在原版的基础上做了一下修正:增加1st在线支付功能与论坛用户数据结合,vip也可与论坛相关,增加互动性vip会员的全面修正评论没有提交正文的问题特价商品的调用连接问题删掉了2个木马文件去掉了一个后门补了SQL注入补了一个过滤漏洞浮动价不能删除的问题不能够搜索问题收藏时放入购物车时出错点放入购物车弹出2个窗口修正定单不能删除问题VIP出错问题主题添加问题商家注册页导航连接问题添加了导航FLASH源文

下载

那么,如何判断业务或模块是否正常呢?我们以一个web类型的业务为例,我们可以检查该服务下的主页、分类页或内容页的关键内容。一般来说,我们可以匹配指定页面Head、Body、bottom的指定字段或关键字。如果可以匹配到指定的一个或一组字段或关键字,那么即为正常,反之为异常。我们可以通过脚本、Nagios、Zabbix等工具来实现对业务的周期性拨测。

这种方法的优、缺点都很明显。优点是这种方法实施难度较低且可以与通过模拟用户行为的方式来测量,也业务实际情况可以比较吻合。但通过这种周期性抽样的方法,存在抽样样本不足或偏差的问题。比如每5分钟拨测一次,如果故障出现和修复都在这5分钟内完成,那么拨测法就很难去捕获到这种错误。

日志分析法

日志分析法即是通过各业务的应用、功能、模块日志进行分析得到可用性的一种方法。

举例:我们业务有一个名为A的模块,那么就周期性的(比如,每小时一次)对这个模块上1个小时日志进行分析。从日志层面区分出正常请求在占比,即是这个模块在过去1个小时的可用性。还是以web类型的业务为例,我们可以从日志中将2XX、5XX状态分别进行统计、分析,可以理解2XX即是Availability,5XX即是Unavailability。(3XX与4XX可以按照实际的业务情况再考虑是否参与分析)

这种方法上很明显的解决了拨测法抽样样本不足或偏差的问题,但也存在与实际业务影响指数可能会存在较大差别的情况。比如,我们在过去1个小时的错误都发生在1分钟内,剩余的59分钟业务都是正常的。很显然这样得出来的可用性和实际业务情况是有一定偏差的。那么怎么解决这种偏差呢?日志分析阈值法就应运而生了。

日志分析阈值法

日志分析阈值法是在日志分析法的基础上添加了状态阈值判断的一种可用性计划方法。

举例:我们业务有一个名为A的模块,我们通过日志分析法得到,这个模块每分钟正常情况下的请求数约为10W次,那么我们可以设置一个阈值为10次。这10次的意思就是指,我们容许在1分钟内发生万分之一以内的错误。如果1分钟内发生的错误在10次以内,我们就认为在过去1分钟的状态为正常,就标记为Availability。如果1分钟内发生的错误超过10次,那么我们就认为在过去1分钟的状态为异常,就标记为Unavailability。最后再统计Availability状态的占比即是这个模块的可用性。当然这个阈值需要根据业务的实际情况进行调整。

这种方法上就很好的解决了拨测法抽样样本偏差与日志分析法差生实际业务影响脱节的不足,达到很好的一种平衡。

还有一个问题,如果一个业务由A、B、C三个模块构成,那么怎样通过模块的可用性,怎么算出业务的可用性呢?简单的方法就是通过最三个模块可用性的平均值即可。但这存在与业务目标相悖的问题。那么我们可以通过与业务目标对齐,进行加权平均的方法。比如A模块对业务来说更加关键,那么我们在计算可用性时就给出A模块更多的权重;C模块是业务的旁路系统,那么就可以在计算时降低对C模块的权重。以此类推,我们得出的可用性就可以尽可能的贴近业务及其目标了。

其它的方法

我们还可以通过利用像基调、博睿这种第三方的测试平台的节点,对业务进行更加广泛的拨测,以提高采集样本的精度,减少其偏差。当然其结果也受限于第三方平台及链路间的稳定性的影响
对于有客户端的业务,我们可以通过在客户端关键路径上进行打点,然后将用户的打点日志集中至服务端后再进行集中分析。这种方法虽然可以反应出最真实的用户状态,但也存在实施成本相对 较高、日志上传延迟等问题。

写在最后

计算可用性的方法有远不至上面写的几种,并且并有哪一种方法可以解决所有的问题和痛点。从成本、收益、时间等角度选择一种或多种最合适自己业务或团队的方法,用于持续改进业务的服务质量才是王道。

相关专题

更多
Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

3

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

windows激活码分享 windows一键激活教程指南
windows激活码分享 windows一键激活教程指南

Windows 10/11一键激活可以通过PowerShell脚本或KMS工具实现永久或长期激活。最推荐的简便方法是打开PowerShell(管理员),运行 irm https://get.activated.win | iex 脚本,按提示选择数字激活(选项1)。其他方法包括使用HEU KMS Activator工具进行智能激活。

2

2026.01.21

excel表格操作技巧大全 表格制作excel教程
excel表格操作技巧大全 表格制作excel教程

Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

6

2026.01.21

毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm
毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm

毒蘑菇VOLUMESHADER_BM测试网站网址为https://toolwa.com/vsbm/,该平台基于WebGL技术通过渲染高复杂度三维分形图形评估设备图形处理能力,用户可通过拖动彩色物体观察画面流畅度判断GPU与CPU协同性能;测试兼容多种设备,但中低端手机易卡顿或崩溃,高端机型可能因发热降频影响表现,桌面端需启用独立显卡并使用支持WebGL的主流浏览器以确保准确结果

19

2026.01.21

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号