热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《运维之下》——第四章:服务器资源使用率

服务器数量达到一定规模后,老板们开始担心了:“每季度这么大金额的服务器采购支出,我们的服务器资源使用率如何?”––––––––

服务器数量达到一定规模后,老板们开始担心了:“每季度这么大金额的服务器采购支出,我们的服务器资源使用率如何?”

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

指标计算


了解资源使用率的前提是记录所拥有的服务器资源以及归属,在服务器采购到位后,就开始跟踪服务器的各项资源指标。但每次老板们问到这个问题时,作为运维人员还是很难直接回答。我们记录了每台机器历史的各项资源使用数据,但如何体现整体的资源使用情况,通过简单的指标表示出来还是比较麻烦的。

首先,我们不能把所有服务器罗列出来,逐台给老板汇报。

其次,每台服务器每天的资源占用情况是随时间,随业务特性动态变化的,需要将CPU、内存、磁盘、IO等每个动态变化的资源指标分别换算成一个值。

例如:一台CPU密集型的服务器,每个时间点访问量的不同,CPU使用率也是不同的,如图4-1所示。

最后,每台服务器每天的平均值,由于高峰期或低峰期的差值很大,均值没有任何参考意义。取每台服务器每天的最大峰值,有时候可能由于某一次数据传输,或者跑一个临时MD5运算导致CPU使用率突增,也不能合理代表这台服务器的CPU使用率。

《《运维之下》——第四章:服务器资源使用率》

图4-1  CPU使用率

了解到的业界一般的计算方法是:

 定义每天的业务高峰期为 10:00AM—10:00PM,求这段时间平均值表示该台服务器当天的使用率;

 每天取峰值的3个点,求这3个峰值点的平均值表示该台服务器当天的使用率。


对于定义业务高峰期,然后求平均值,我们认为不够精准,很多业务不一定白天时间达到它的峰值。如果每个业务都个性化定义高峰时间,工作量比较大,管理起来也很麻烦。每天取峰值的3个点求平均值,很多时候人工操作或者临时性的计算很容易把这个峰值提得太高。


经过多次讨论后,确定了下面的计算方法:

(1)每台服务器的CPU、内存、磁盘、IO、网卡数据每2秒钟采集一次;

(2)每天分别取这些数据的TOP n%求平均值。

如图4-2所示为某台服务器某天的监控数据,我们计算出CPU、内存、磁盘和IO的数值如表4-1所示。


《《运维之下》——第四章:服务器资源使用率》
图4-2  监控数据

表4-1  资源数值

资  源  项

数    值

CPU

98.12%

内存

73.29%

磁盘

58.69%

IO

29.05%

 

当然,怎么计算这个资源数值都没有问题,只要是统一的计算模型,能够表示所有机器的资源占用指标即可。我们这么计算是希望能够更接近服务器的平均峰值,消除一些临时性尖峰导致数值较大的问题。


指标展现


完成了资源使用率计算,但如何整体展现所有服务器的资源使用率也是一个问题。由于业务特性的不同,有消耗CPU的,有消耗内存的,也有类似离线存储消耗磁盘空间的,不可能把所有服务器的某项值加起来,然后求平均值,这样说明不了任何问题,而且值会低得可怜。在一个案例中,公司所有服务器每天的CPU值求平均值,CPU使用率只有23%左右。所有人看到这样的数据都会问一句话:“为什么我们的服务器资源使用率这么低?”


对于如何体现公司整体的服务器资源使用率这个问题,我们也没有什么好的方法,不过可以从另外两个维度去体现。

(1)将整个公司这个维度拆解到最小的相同功能集群的粒度,统计和展现这些小集群的资源使用率情况。这个时候就需要结合之前提到过的“服务树”,我们通过服务树将公司的产品划分到产品线->子系统->集群这样的粒度,每个小集群的功能是类似的,这群服务器的资源使用模型也是类似的。研发或运维在提交采购预算时,以最小集群为单位。领导在审批预算时,可以很方便地查看该集群的资源使用情况,决定是否购买。


(2)每月统计出资源使用率不达标的服务器,发给相关的研发主管和运维人员,督促他们尽快利用或者归还资源。比如某个集群每月不达标的服务器数量超过该集群的5%,则认为这个产品线资源使用不达标。

这样侧面解决了如何整体展现公司资源使用率的问题,给出最小集群资源使用率不达标的情况,展现的数据量比较少,而且能够很好地跟进和解决。还可以给出资源使用率不达标服务器和所有服务器的占比曲线,用来观察整个公司服务器资源使用率的变化情况。


这样既满足了工程师需要了解具体信息,执行改进的需求,也满足了老板需要了解整体信息,把握全局的需求。


怎么计算、怎么展现才算合理,每个公司都有自己的做法。当然,在你认为公司整体资源使用率都还不错的情况下,所有服务器的平均值也许可以作为一个基准,用来宏观监控整体资源使用率有没有变好或变坏也是挺不错的。


不达标原因分析

完成上述工作后,我们开展了一次资源使用率未达标服务器原因分析,按照未达标的原因进行了归类。如图4-3所示。


《《运维之下》——第四章:服务器资源使用率》

图4-3  资源使用率未达标原因归类

每类原因说明如下:

 灾备:该类型服务器属于对重要服务的备份服务器,平时没有或有很少的流量。

 特殊服务:该类型服务器属于特殊用途需要独占或者多副本存在,如ZooKeeper,或类似博客对外服务又需要安全隔离的业务等。

 服务部署中:服务扩容、搬迁时,暂时未引入业务流量。

 流量未达预期:业务已经在线上运行,但由于流量预估不准确,服务上线后流量和计算量未达到预期。

 开发测试中:新服务小流量运行,处于开发联调阶段。

 测试环境:研发或测试的线下集群,用于压力测试、功能测试等。

 计划下线:服务优化、架构调整、业务功能裁剪等,空闲服务器处于待下线归还状态。

 故障中:服务器故障停止业务,处于维修状态中。

 高峰预留:为了应对比如业务促销活动、特殊节假日等流量高峰,提前储备的服务器资源。


下面分析导致前几类原因出现的问题。

1.业务线预算不准确

 预估的业务流量较大,实际业务流量未达到预期,导致已经上线的服务器资源浪费。

 项目计划不准确,原计划3月份进行新服务上线或者扩容,结果项目延迟到6月份,导致3个月时间的服务器资源闲置。


2.服务器采购效率低,缺少快速伸缩的能力

 随着公司对于服务器需求的数量越来越大,很早以前那种随用随买的模式已经不适合了,转而采用服务器集采的模式,从预算申请,到领导审批、采购招标、供货商送货、服务器上架、系统装机交付等多个环节,在正常情况下会耗时2个月。那么业务部门往往会提前并较多地购买服务器,造成一定时间段的服务器资源浪费。

 为了应对某次突增几倍的业务促销活动流量,需要提前准备服务器资源。当活动结束后,服务器资源的归往往不及时,归还后其他业务部门消化这部分资源的时间也比较长。

 服务器采购时资产是划分到各个部门的。服务器资源归还后,还存在部门间资产更新计算的问题。


3.缺少资源监控平台

缺少资源监控和审查机制,业务部门浪费的机器也不会及时归还。


资源优化


看到这几类原因后,第一时间能够想到的解决方案就是公有云。类似AWS的服务,能够快速地交付或归还虚拟机资源,按时间、按流量收费。虽然大部分业务是可以部署在公有云上的,但还有很多类似HBase、离线计算等对磁盘IO、内网带宽有较高需求的业务,不太适合在虚拟机上部署,成熟公司这部分业务的服务器数量一般占到30%~60%。


先不讨论公有云是否真正省成本,仅就对目前国内云服务商的安全评估,我们还不敢把高敏感、高安全要求的用户数据、现金支付类业务放置在云端。另外,多机房服务冗余、机房间专线互通等各种因素也需要考虑进去。


我们的目标是通过缩短服务器采购周期,资源能够具备快速伸缩的能力,结合预算审批、资源监控等手段,将不达标服务器控制在合理范围内。综合考虑后,可选的解决思路如下:

(1)支持物理机租赁模式,提高服务器交付效率;

(2)支持私有云和公有云的使用,降低物理机的需求;

(3)统一预算平台,限制不达标业务的申请;

(4)资源监控,不达标服务器资源能够及时归还。


作为一些互联网公司,不希望投入过多的资源在固定资产上。运维人员也不愿意投入过多的精力在服务器的采购、上架、维保以及后续的报废处理上。当前已经有很多公有云支持虚拟机和物理机的租赁业务,传统的IDC厂商也陆续提供物理机租赁业务,由他们负责服务器的采购、上架等一系列工作,按照我们要求的时间、地点(IDC、机柜位置等)进行交付。公有云或服务器外包公司提供足够的备机池资源,能够应对我们对于服务器快速伸缩的需求,按照实际租赁时间收费。


成本方面,按照服务器3年淘汰,每次物理机采购实际是预付了3年的使用费用。采用租赁的方式按实际使用时间付费,不需要提前支付未来的费用。对于项目计划不合理、预算不准确、高峰期预留等问题,我们可以通过快速的服务器交付、归还的方式缓解这些问题,将成本支出降到最低。当前,足够的备机池、快速的交付时间是有成本支出的。


预算平台和资源监控的结合,限制和发现那些资源使用率不达标的服务器,督促业务线及时归还资源,减少成本支付。


提升服务器资源使用率还有很多方法,比如服务模块混布、资源闲时利用,这些属于运维可控的范围。另外,研发对于代码和功能的优化,效果往往会更加明显。


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
author-avatar
开发工程师
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有