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

简介:

本节书摘来异步社区《大型网站服务器容量规划》一书中的第3章,第3.1节,作者: 郑钢 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.4 通过回归方程规划容量

回归方程是统计学里面的知识,是一种应用数学,通常属于数学专业同学研究的方向,运维人员很少用这种方法评估系统容量。下面花点时间引出回归方程在服务器容量规划中的应用,这也是本书介绍的重点。

容量规划的关键就是找出系统可承载的最大压力,然后根据极限压力再做部署规划,话说的容易,其实这往往是最困难的部分,因为它不像杯子那种容器,其容量是很直观的、可以提前确定。而服务器的性能是不好估量的,看不到摸不着,其容量只能通过实际测试才能得到。再说,我们所运维的系统可是由数以千计的机器组成的,这么多机器对系统的容量都起到决定性的作用,而且大多数情况下各个机器的性能是不一致的,一台机器的容量数据不能作为其他机器的标准,总之各服务器都有自己的极限容量。就像电池一样,有的电池容量较大,2600毫安,有的容量较小,2000毫安,因此,它们各自的续航时间是不同的。

容量评估就是用现在的数据预估未来的变化,用什么方法来预估呢?在正式回答之前,咱们还是用数据说话,先看几张监控图,也许大家就明白是怎么回事了,如图3.3所示。


3


图3.3中显示的是流量与整体cpu_idle之间的关系,上面的access_log_pv是每分钟的访问日志,下面的cpu_idle是每分钟的cpu_idle,大体趋势上这两张图是对称的,这两张图表明:访问量越大,CPU利用率就越高。其实不说大家也会这么想,访问量越大,相应的CPU使用率当然就越高了。其实这是在正常时的情况,在某些情况下,访问量越大,CPU使用率越低,您信不?后面我们再讲。

下面再看图3.4,这是流量与流量之间的对比,注意并不是流量与CPU利用率。


4

一般的网站都会有前端模块和后端模块,前端模块则是实际的流量访问入口,图3.4中的下图lighttped_log是入口模块的访问日志,上面的图front_ms_log则是后端模块的访问日志,这两个日志的时间统计粒度是一样的,都是每分钟内的访问量。front_ms_log每分钟是15个左右,lighttped_log大概是每分钟1000个,虽然这两个日志数量级差别很大,但它们在总体上的趋势是一样的,front_ms_log随lighttpd_log的变化趋势而变化,因此,这两张图中的曲线依然相似。

以上的两张大图虽然一定程度上说明了问题,但似乎还不够明显,毕竟它们展现的是入口流量与整体CPU的关系或前后端模块的流量关系,也就是监控粒度是整体。下面再看图3.5,这里的监控粒度是模块,也就是某个Server,如nginx。

图3.5中,front_ms.log是php-cgi的日志,php-cgi_proc_CPU是php-cgi的使用率,从图3.5上看这两者的关系确实明朗了很多,几乎完全是一样的趋势。这是模块pv与模块消耗的CPU对比,针对的是模块。另外说明一下,由于系统中任何一个模块的CPU使用率、或者整机的CPU利用都是由其流量驱动的,入口流量又以一定的比例分流到后端,因此,几乎是系统内的任意流量都与系统内的任意模块CPU利用率之间保持某种关系,简而言之,未必是模块自身的流量与模块自身的CPU利用率之间才呈现关联关系,也许只是这种关联关系比较明显而已。有关这一点可以通过监控图来验证,把所有机器、模块的流量和CPU监控放到一起对比,会发现趋势线是类似的。


5

从上面3个大图来看,这些流量都是相关的,即保持某种依赖关系,流量越大,CPU消耗、后端流量等都跟着增加,如果把这一关系用函数y=f(x)来表示的话,其中的x表示流量,y便是CPU消耗或者后端流量等相关的因素,找出x与y的关系就是容量规划设计的思想。以上图中的监控信息可以用来生成样本数据,这种由已知的样本去预估未来的变化趋势,是典型的回归应用,容量规划的核心思想就是曲线拟合。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
弹性计算 容灾 关系型数据库
阿里云服务器ECS中扩容云盘后磁盘容量没有增加的解决方法
ECS控制台操作扩容只是扩大云盘的存储容量,不会扩容ECS实例的文件系统。还需要登录实例,然后进行扩容文件系统的操作。
1193 0
阿里云服务器ECS中扩容云盘后磁盘容量没有增加的解决方法
|
2月前
|
存储 弹性计算 对象存储
ECS快照问题之查看ECS快照容量失败如何解决
阿里云ECS用户可以创建的一个虚拟机实例或硬盘的数据备份,用于数据恢复和克隆新实例;本合集将指导用户如何有效地创建和管理ECS快照,以及解决快照过程中可能遇到的问题,确保数据的安全性和可靠性。
|
7月前
|
Java 数据库 Spring
Spring Boot 生产环境出现问题,且问题莫明其妙 有可能是服务器的容量不足
今天系统莫明使用不了,同事跟我说昨天还好好的,今天突然就不行了。一想服务器没有动过,不会有什么问题呀!于是查看日志,查看数据库是都没有问题。心里非常不解,但是问题却一直存在。花了大概1小时,还是没有找到问题,最后看一眼服务器的容量,发现使用率为100%,顿时知道发生了什么事,将容量解放,重启服务问题就解决了。 像这种错误,如果没有检查服务器,估计到死都不知道是这样产生的。
43 0
|
10月前
|
存储 机器学习/深度学习 弹性计算
热门实践丨如何结合实际业务进行 ECS 规格选型与容量验证
热门实践丨如何结合实际业务进行 ECS 规格选型与容量验证
|
24天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
27天前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
413 4
|
28天前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程