《大型网站服务器容量规划》一3.1 通过监控规划容量

3.1 通过监控规划容量

任何一家互联网公司都会有自己的运维系统,在运维系统之中,重中之重的是监控系统。

监控的方法有很多,最简单的就是利用一些系统命令,如用df命令来查看磁盘使用率,然后每天出报表,通过查看报表运维人员便监控到系统压力及容量,当逼近系统压力上限时,发出报警,提醒扩容。

但这种方法不能作为主要的监控手段,仅用来做辅助监控之用,毕竟监控是为了实时了解系统的状态。这方面都是用监控系统来完成,目前开源的监控系统有很多,如cacti、zabbix等,大多数监控系统都是以图表方式展示监控指标,如图3.1所示。

大多数监控系统都是基于SNMP(Simple Network Management Protocol),即简单网络管理协议。SNMP是度量性能指标的通用标准,大部分网络设备和服务器设备都支持该协议,因此,我们的监控系统才能通过该协议获取到设备的监控指标。既然是“简单”网络管理协议(其实SNMP一点都不简单),这说明仅凭SNMP的话还是不能满足所有监控需求,因此,这些监控系统也支持自定义采集程序。

扩展一下,如果公司业务比较复杂,一般的开源监控系统无法满足需求的话,公司会开发出适合的监控系统。这通常是为满足自定义监控,自定义的监控一般包括。

(1)日志监控,从日志文件中匹配出关键字,统计相应的个数,比如统计状态码的个数,或者处理时间大于一定时间的个数。

(2)端口监控,探测端口是否存活,一般用来判断Server程序是否“健在”,但不是很可靠,有时候Server端口还占据着但已经无响应了,此时端口监控依然表示正常。

(3)语义监控,这种就相对可靠多了,它是模拟客户端向Server发送请求,然后Server给予响应的方式来监控。

(4)结构体监控,这种监控要与特定进程绑定到一起才行得通,也就是那个被监控的模块会处理这种结构体。

除此之外,还可以通过模拟用户单击的方式来监控,也就是模拟用户行为,这是最真实的监控,效果最好,但由于此类模拟程序是要捕捉网页中的dom标签元素,因此,只要网页改变,监控就要重新写,比较麻烦。

回到正题,在监控系统中我们都会设置报警阈值,在监控图中我们都会看到逼近报警阈值的紧迫程度。如果接近了阈值,运维人员便开始扩容。

扩容的前提是压力趋近于模块的极限,如某模块每秒最大处理的请求数(qps)是300个,当实际qps接近于250左右时就要考虑扩容了。如何判断模块已经接近了最大处理极限呢?一种方法是在程序的日志文件中增加请求处理时间的字段,这样针对每个请求的处理时间我们便清楚了,如果任何页面的处理时间太长的话就要考虑扩容了。这里所说的处理时间长度没有固定的大小,还是要和业务结合,如果该页面主要消耗CPU资源,在不考虑阻塞的情况下,该页面的处理时间就不应该太大,最大不超过几百毫秒,如果该页面功能和存储或外网相关,就会相对长一些,超过1秒是很正常的。

一般情况下我们也会把模块各种请求的处理数量或大于某值的请求统计出来,按分钟或更小的时间粒度在监控系统中绘图。如图3.2的MySQL的增、删、改、查和慢查询监控图所示。

除此之外,大多数模块都会有请求超时的设置,例如某模块设置了请求的最大处理时间是30秒,超过30秒的请求会在日志中写入报错信息,一般会有warning、error或fatal等关键字,我们可以在监控日志中匹配这些关键字来统计单位时间内因超时而报错的请求数,当达到某个极限值时就表示离扩容不远了。

为了将监控可视化,通常情况下也会把这类日志监控添加到监控系统中,同样,如果监控系统不支持这类监控的话,我们可以自己写监控程序,然后自己输出图像。一般开发语言中都有现成的图形函数可以调用,或者使用第三方工具,如可以利用rrdtool或者前端图形库highcharts、amcharts等。

时间: 2024-09-12 18:15:49

《大型网站服务器容量规划》一3.1 通过监控规划容量的相关文章

《大型网站服务器容量规划》一导读

前 言 大型网站服务器容量规划当今社会已经进入信息时代,人们足不出户,从网络上就可以获取自己需要的信息.为了满足正常的业务需求,任何一个网站都要有硬件支持,无论日访问量是一个百万级的中型网站还是上亿级的大型网站.为了正常响应用户请求,都必须提前规划好业务容量.互联网的快速发展使得网站的流量无法预估,因此,网站的运维人员必须随时监控流量,随时扩容以应对大流量带来的压力.目前业内容量规划的方法有以下几种. 一种方法是凭经验.根据以往的运维经验和目前系统的监控信息来判断是否需要扩容.这种方法明显的缺点

《大型网站服务器容量规划》一2.4 容量管理的目标与收益

2.4 容量管理的目标与收益 虽然我们在QA那里能够获取到各应用模块的性能数据,但在新项目上线或原有基础上扩容时,仍然需要每次重复评估服务稳定性,这说明我们在平时的工作中对服务系统的容量没有很直观的认识,对系统资源的可用率,我们需要量化. 为了让大家更直观地看到系统的已用率及剩余可用率,在此展开容量管理相关的工作.容量管理的主要目标用于评估各集群模块当前及未来某流量下的容量状态. 为方便陈述,我们这里所说的容量管理是指服务器容量管理. 容量管理的基本目标是以合理的硬件成本满足业务需求.其实我们平

《大型网站服务器容量规划》一3.4 通过回归方程规划容量

3.4 通过回归方程规划容量 回归方程是统计学里面的知识,是一种应用数学,通常属于数学专业同学研究的方向,运维人员很少用这种方法评估系统容量.下面花点时间引出回归方程在服务器容量规划中的应用,这也是本书介绍的重点. 容量规划的关键就是找出系统可承载的最大压力,然后根据极限压力再做部署规划,话说的容易,其实这往往是最困难的部分,因为它不像杯子那种容器,其容量是很直观的.可以提前确定.而服务器的性能是不好估量的,看不到摸不着,其容量只能通过实际测试才能得到.再说,我们所运维的系统可是由数以千计的机器

《大型网站服务器容量规划》——2.4 容量管理的目标与收益

2.4 容量管理的目标与收益 虽然我们在QA那里能够获取到各应用模块的性能数据,但在新项目上线或原有基础上扩容时,仍然需要每次重复评估服务稳定性,这说明我们在平时的工作中对服务系统的容量没有很直观的认识,对系统资源的可用率,我们需要量化. 为了让大家更直观地看到系统的已用率及剩余可用率,在此展开容量管理相关的工作.容量管理的主要目标用于评估各集群模块当前及未来某流量下的容量状态. 为方便陈述,我们这里所说的容量管理是指服务器容量管理. 容量管理的基本目标是以合理的硬件成本满足业务需求.其实我们平

《大型网站服务器容量规划》——3.4 通过回归方程规划容量

3.4 通过回归方程规划容量 回归方程是统计学里面的知识,是一种应用数学,通常属于数学专业同学研究的方向,运维人员很少用这种方法评估系统容量.下面花点时间引出回归方程在服务器容量规划中的应用,这也是本书介绍的重点. 容量规划的关键就是找出系统可承载的最大压力,然后根据极限压力再做部署规划,话说的容易,其实这往往是最困难的部分,因为它不像杯子那种容器,其容量是很直观的.可以提前确定.而服务器的性能是不好估量的,看不到摸不着,其容量只能通过实际测试才能得到.再说,我们所运维的系统可是由数以千计的机器

《大型网站服务器容量规划》——2.2 服务器容量规划的源由

2.2 服务器容量规划的源由 为什么要做容量规划呢?当资源涉及的成本变得非常可观时,势必就需要容量规划,谁也不愿意花冤枉钱. 做运维工作的读者都应该了解SLA(Service-Level Agreement),即服务等级协议,这是关于网络服务供应商和客户间的一份协议,其中定义了服务类型.服务质量和客户付款等术语.可能我们不那么关注这份协议的细节,但我们最了解的是SLA中的"几个9",如表2.1所示. 根据产品线的重要程度,公司会将不同产品线划分成多种级别,每种级别产品线的SLA也是不同

《大型网站服务器容量规划》一2.2 服务器容量规划的源由

2.2 服务器容量规划的源由 为什么要做容量规划呢?当资源涉及的成本变得非常可观时,势必就需要容量规划,谁也不愿意花冤枉钱. 做运维工作的读者都应该了解SLA(Service-Level Agreement),即服务等级协议,这是关于网络服务供应商和客户间的一份协议,其中定义了服务类型.服务质量和客户付款等术语.可能我们不那么关注这份协议的细节,但我们最了解的是SLA中的"几个9",如表2.1所示. 根据产品线的重要程度,公司会将不同产品线划分成多种级别,每种级别产品线的SLA也是不同

《大型网站服务器容量规划》——第2章 容量规划简介2.1 什么是容量

第2章 容量规划简介 2.1 什么是容量 容量意指容量规划,从经济学到工程领域都有其应用,容量规划听起来是个高大上的概念,本质来说,其实就是资源利用率的管理,一个较典型的例子就是容器,例如我们是用水杯来接水喝,水杯总是有一个最大容量,我们所接的水肯定都在杯子容量之内,超过这个容量水就会溢出,这个道理还是很易懂的.其实在接水这个动作发出之前,我们通过观察就已经知道了杯子的最大容量是多少,所接的水必然会控制在杯子容量之内,如果一个杯子容量不够,口渴的同学可能会选择更大的杯子或者同时用两个杯子.因为这

《大型网站服务器容量规划》一2.1 什么是容量

2.1 什么是容量 容量意指容量规划,从经济学到工程领域都有其应用,容量规划听起来是个高大上的概念,本质来说,其实就是资源利用率的管理,一个较典型的例子就是容器,例如我们是用水杯来接水喝,水杯总是有一个最大容量,我们所接的水肯定都在杯子容量之内,超过这个容量水就会溢出,这个道理还是很易懂的.其实在接水这个动作发出之前,我们通过观察就已经知道了杯子的最大容量是多少,所接的水必然会控制在杯子容量之内,如果一个杯子容量不够,口渴的同学可能会选择更大的杯子或者同时用两个杯子.因为这是潜意识里的行为,尽管