阿里云配置选型
1、衡量业务指标的标准
PV 访问量、IP 访问量、用户数、活跃用户数等都是常见衡量业务访问量大小的指标。通过合适的指标来评估及衡量业务量,是我们做容量配置规划的基础也是第一步。
常见衡量业务量级的指标项如下:
得到业务访问量的指标数据后,我们要将其转换成为系统压力的指标数据。这一步让抽象的业务访问量的指标数据,变成技术人员熟悉的性能压力指标数据,是容量配置规划的关键一步。
上线业务量和性能压力的转换原理
示例:一个 500 万 PV 的网站,大概要用多少台服务器?
首先,我们要弄明白的是 500 万 PV 的业务访问量到底会对系统产生多大的请求压力。500 万 PV,即一天 24 小时中访问了业务页面 500 万次,如果用 500 万÷24 小时÷60 分钟÷60 秒即可得出每秒的页面请求数,用这个结果表示对系统产生的请求压力值的话,那么得到的结果和实际情况将会有很大的偏差。因为实际的业务访问过程,比如,凌晨等业务低峰期,基本上没多少业务访问量。在实践中可以发现,一天中的 80%业务请求量主要发生在 40%的时间内,这成为我们计算 PV 值对应请求压力的重要依据。24 小时的 40%是 9.6 小时,即 80%的请求发生一天的 9.6 个小时当中。基本与绝大多数的业务场景吻合,业务请求主要集中在白天,晚上则相对较少。
PV 请求量计算模型如下:
每秒处理请求的数量=(80%×总 PV 量)/(24 小时×60 分×60 秒×40%)从而 100 万/500 万 PV 请求量对应的计算结果为:(80%×100 万)/(24 小时×60 分×60 秒×40%)=23.1 个请求/秒,(80%×500 万)/(24 小时×60 分×60 秒×40%)=115.7 个请求/秒
即服务器一秒能处理 23.1 个请求,就可以每天承受 100 万 PV 的业务量。服务器一秒能处理 115.7 个请求,就可以每天承受 500 万 PV 的业务量。
其次,在真实的业务场景下,有低谷也会有高峰,我们主要考虑高峰期的情况。假如一天中高峰期的请求量是平时请求的两倍或 3 倍(比如,电商之类的一些活动,高峰波动会更大,具体乘以多少根据业务情况而定),示例如下:
23.1 个请求/秒×2 倍=46.2 个请求/秒
23.1 个请求/秒×3 倍=69.3 个请求/秒
115.7 个请求/秒×2 倍=231.4 个请求/秒
115.7 个请求/秒×3 倍=347.1 个请求/秒
最终,如果服务器在一秒内能处理 46.2~69.3 个请求/秒,那么就能应对 100 万 PV 的业务请求量。
如果服务器在一秒内能处理 231.4~347.1 个请求/秒,那么就能应对 500 万 PV 的业务请求量。
简化的计算模型参考:
用户数×业务因子(10%~30%)=活跃用户数
活跃用户数×业务因子(10%~30%)=在线用户数
在线用户数×业务因子(10%~30%)=并发用户数≈每秒请求数
2、云端服务器配置选型
如果业务还处于前期需求规划阶段,想知道对应 PV 访问量的业务要用什么样的服务器配置,又需要用多少台,根据前面所说的,先通过业务访问量与性能压力指标的转换,把具体访问的 PV 量对应到服务器每秒处理的请求数中,然后只需要知道对应服务器每秒处理的请求数一般都是用多少配置的服务器来运行即可。PV 量和服务器配置/RDS 配置性能对应表
规划参考模型:性能压测模拟业务访问量对应性能压测期间的性能状态,采集高峰期所用的服务器配置以及用了多少台。系统性能瓶颈、未来业务扩展和评估,都需要进行必要的性能压测,对应的压测结果是我们未来做容量规划、成本预算的重要依据。
当前阿里云在服务器配置中(2019 年 1 月数据),最高配的配置是 160 核 1920GB。最为常见的配置还是 1 核 1GB、1 核 2GB、2 核 4GB、4 核 8GB、4 核 16GB、8 核 16GB、8 核 32GB、16 核 64GB、16 核 128GB 等。不管多少核多少 GB,实践中最为常见的服务器配置都存在着一个规律,即 CPU 与内存资源配比一般都是 1∶1、1∶2、1∶4、1∶8,这是服务器配置中的标配。具体 CPU 与内存的资源配比是 1∶1、1∶2、1∶4、1∶8 的服务器,它们的应用场景及适合部署的软件服务,经实践汇总如下:
1.CPU 与内存资源配比:1∶1
适用于个人网站、官网等小型网站部署,一般在低配机器中,如 1 核 1GB、2 核 2GB。基本上在云端实践中,很少看到基于 4 核 4GB、8 核 8GB、16 核 16GB 的 ECS 进行运维部署。
2.CPU 与内存资源配比:1∶2
1∶2 的处理器与内存配比可以获得最优计算资源性价比,不管是线下 IDC 的物理服务器,还是云端 ECS 服务器的配置,1∶2 均为黄金比例。1∶2 的配比,需要单独拿出来说一下,这个配置特别适合 Web 服务/应用类,因为这类应用对 CPU、内存的要求很高,都需要最优的计算资源。4 核 8GB 偏向中小型 Web 服务/应用类部署,8 核 16GB 偏向中大型 Web 服务器/应用类部署。常见的 Web 服务/应用类配置部署实践如下:·Tomcat 适用中低配:2 核 4GB、4 核 8GB,特别是 4 核 8GB 是最优选择。因为 Tomcat 是单进程多线程的模式,是个轻量级且并发请求数最多也就只能跑到 1000 左右。所以单台 Tomcat 高配的服务器并不能跑满服务器的性能,会造成很大的资源浪费。如果想跑满中高配服务器性能,常规做法就是在一台服务器上部署多台 Tomcat。
·Nginx 是轻量级的高性能中间件,Nginx 基于 Epoll 网络 I/O 模型,在高并发场景下对性能消耗很低。如果在服务器上仅部署 Nginx 做转发,2 核 4G/4 核 8G 的配置足够了,无须 8 核 16G 的高配。如果 Nginx+PHP 做 FastCGI,更多性能的消耗在于 PHP,所以一般用 4 核 8GB/8 核 16GB 的经典配置。
3.CPU 与内存资源配比:1∶4
1∶4 的配比,比如,2 核 8GB、4 核 16GB、8 核 32GB。这类配比的配置偏向内存,特别适合部署数据库类的应用。比如,当 RDS 满足不了业务需求,需要自行在 ECS 上搭建的时候,8 核 32GB 是保障数据库具有良好性能的经典配置。但值得注意的是,数据库类应用涉及数据持久化,需要 SSD 云盘提供高存储 IOPS 且低读写延时。
4.CPU 与内存资源配比:1∶8
处理器与内存资源配比为 1:8,比如,2 核 16GB、4 核 32GB、8 核 64GB,这类是高内存资源占比。尤其适用于数据库类中的内存型应用,比如,Redis、Memcache 的部署。
在实践中,如果用 8 核 16GB 部署一台 Redis,会造成性能过剩。在缓存选型中也跟大家介绍过,Redis 是单进程单线程模式,对多核利用得不太好,所以适合偏向用 1∶4/1∶8 的 2 核 8GB/2 核 16GB 高内存资源占比的配置。当然如果想要 Redis 把多核的性能资源利用好的话,可以跟 Tomcat 一样,在一台机器上部署多个 Redis 实例。
部署代码的应用,都有代码日志存放的需求,这时候一般系统盘默认的 40GB 容量空间满足不了存储需求。大部分场景需求都是存放业务代码、存放代码日志文件,所以常规的 100~300GB 磁盘空间是,标磁盘空间利用率一般不高,建议结合线上实际用量,合理利用。
数据库类的应用,磁盘空间一般需求较大,都是 500GB 以上。要存储数据库的 Binlog、数据文件、备份等,则需要较大的存储空间。另外,数据库主要满足的是数据读写的需求,所以对磁盘 I/O 有一定要求,一般采用 SSD 云盘。
通过实践发现,100GB、300GB、500GB 存储空间是企业对服务器磁盘配置的标配,但同时 80%的企业服务器的磁盘利用率仅在 20%~30%。
3、带宽配置选型
如果需求只是入口流量,带宽一般采用 SLB,带宽性能、架构扩展、安全性都比 ECS 直接绑定公网带宽要好。此用户业务,主要采用 SLB,所以如果只是入口流量需求,没必要给后端配置高配的固定带宽。
·如果需求是出口流量,需要主动去访问公网服务,需要配置公网带宽。这里采用 SNAT 的方式(那时候还没有 NAT 网关服务),更不需要给每台服务器都绑定这么高配的固定带宽。
带宽计算模型:
带宽配置=每秒请求数量×每次请求传输的数据量
针对 100 万 PV 和 500 万 PV 的网站,要选择的带宽配置如下:
100 万 PV 带宽配置(平时访问量)=(80%×100 万)/(24 小时×60 分×60 秒×40%)×20KB/s=23.1 个请求/秒×20KB/s=462KB/s(大 B 的单位)=3696bps/s(转换成小 b),即 3.5Mbps
100 万 PV 带宽配置(峰值的 2 倍)=(80%×100 万)/(24 小时×60 分×60 秒×40%)×2 倍×20KB/s=46.2 个请求/秒×20KB/s=924KB/s(大 B 的单位)=7392bps/s(转换成小 b),即 7Mbps
100 万 PV 带宽配置(峰值的 3 倍)=(80%×100 万)/(24 小时×60 分×60 秒×40%)×3 倍×20KB/s=69.3 个请求/秒×20KB/s=1386KB/s(大 B 的单位)=11088bps/s(转换成小 b),即 11Mbps
500 万 PV 带宽配置(平时访问)=(80%×100 万)/(24 小时×60 分×60 秒×40%)×20KB/s=115.7 个请求/秒×20KB/s=2314KB/s(大 B 的单位)=18512bps/s(转换成小 b),即 18.5Mbps
500 万 PV 带宽配置(峰值的 2 倍)=37Mbps
500 万 PV 带宽配置(峰值的 3 倍)=55Mbps
在云端带宽配置的选择中:
·80%的应用默认选择按量带宽,即按量带宽是云端带宽类型选择的最佳实践。
·20%的应用选择固定带宽。这个特定的条件就是,如若每天按量下载的量合计费用超过带宽平均每天费用,则使用固定带宽。
实践案例 1:固定带宽与按量带宽费用对比
固定带宽和按量带宽费用对比
通过以上计算可知,如若使用 5Mbps 峰值带宽,每天业务产生的流量超过 5.25GB,那么这时候使用固定带宽才划算。当每天业务产生的流量低于 5.25GB 的时候,优先使用按量付费。
评论