如何合理的评估上线服务器数量

一、性能指标

 

我们知道服务器,有 CPU、内存、IO、网络等一系列指标,除了这些系统级的,还有些针对各个语言自己的性能参数,而一个服务器的吞度量与请求对CPU的消耗、外部接口、IO等等紧密关联的 ,面对这么多繁杂的参数我们如何有效而快速的利用,如何评估这些性能参数信息? 下面我以游戏服务器来为例说一下我们主要关注点。

 

我们主要关注以下3个点:

并发数:并发请求数

响应时间:平均响应时间

TPS:每秒钟处理事务数量

TPS =并发数/响应时间

 

通过上面我们看到,TPS可是反映一个服务器的吞吐量的综合值,他是我们评估服务器性能的一个重要参考,通过tps,我们可以知道单台服务器的最大请求可以处理多少,pcu(同时在线人数)是多少 ,以及配合其他性能参数,我们还可以定位到服务器的性能瓶颈,所以我们预估服务器的性能的时候,TPS是一个关键的参考值。

 


 

二、上线前的测试流程

 

 1、测试模型设计

     这一部分,也可以叫测试目的的确定,不同测试目的,对测试模型的要求也不一致,测试目的的定位,也决定了每次测试的方案和偏重点会不一样,所以不能一概而全,要区别对待。

    

      我们一般会有一些如下的区分:

    

     服务器TPS测定,也是定位服务器的最大承载量,我们需要优先通过压力测试找到TPS的初始值,然后再进行稳定性测试和容灾测试,找到TPS的稳定值范围在哪里,最终修正TPS值。

     性能瓶颈定位,通过压测和关键指标数据的收集,定位服务器性能瓶颈的区域。

     关键接口指标,针对关键接口做一些指标收集。

 


 

2、压力测试

  压力测试主要是测试服务器在极限情况下的承载是怎样的,以及能够达到怎样的极限值。做压力测试还需要针对性的编写一些压测机器人来帮忙我们发起密集的请求,以让服务器达到满荷的状态。

 

     我们的压测主    要包含这几个方面:

 

  •  1)、指令机器人

         指令机器人是压测发起 主体,你可以把他看作为一个模拟的用户,模拟用户的指定行为,和收集一些关键数据。从功能方面来看,机器人主要功能,根据输入指令,发起特定请求(批量或者单个),收集请求和回复数据。

        由于每个游戏的业务类型不一样,协议也有自己的加解密方式,所以相对要复杂些,而且复用性也比较差。而web方面的指令机器人,简单易用,只要把关键的部分通过元数据来配置,基本可以做到一次编写,到处乱用的目的。

 

 

  •   2)、指令的录入

         指令一般都是client向服务器发起的request,每种应用不尽相同,可以自己编写指定格式,也可以在服务器或者客户端进行指令录入,因为游戏协议 的特殊性我们一般是做录入来处理,这个也可以根据自己需求来,主要是保证,指令能够让方便机器人读取就行。

 

   

  • 3)、数据准备和指标的录入

    游戏一般是有状态的情况,所以在除了指令录入还需要准备些初始化的数据,比如模拟帐号,一些道具的初始等等。机器人不但负责请求,还得有一定的数据收集功能,一般的数据包含如下,

     request数量/秒,成功率多少,失败率多少,还有每个接口的请求次数,平均耗时等。在腾讯这边,有时候会需要这些数据上传到统计平台,来统计测试的统计图,做最终的压测指标。

       这里给大家截图一个我们平常使用的输出模型:

 

  这个图我么可以看到,总共请求了9960次,成功100%,870次请求/s,,请求间隔时间,11.450s,最快3.3ms,最慢871.6ms。

 

  以上这几部主要做压测的基础功能,在测试的时候,我们需要把指令机器人跑起来,不断的加量,看服务器的运行状况,以此来评测服务器的tps。

 


 

3、稳定性测试

 稳定性测试就是要测试服务器的稳定性,有时候服务器在功能测试的时候并不能测试到一些状况,比如长时间运行会有资源的没释放,导致的GC的问题,或者是DB快速增长后的访问变慢问题,这些就需要稳定性测试来发现问题。

 

我们一般在做出压力测试情况下,会计算出单台服务器的tps,然后以此tps压力下,让机器人测试19小时以上,期间会检测服务器相关的cpu,内存,网关流量;逻辑进程相关的,cpu,句柄,gc次数,线程数;缓存服务器的cpu,以及网络流量等。通过查看这些参数的运行曲线,会很容易发现一些常见的问题。关于这些参数的监控工具,常用的有很多,我就不一一推荐了。

 


 

4、容灾测试

容灾测试就是测试下服务器在出现意外的情况下,如何快速的修复服务或者保障服务器不宕机。

 

在腾讯合作的项目中,一般会有要求30分钟以内恢复,这个就需要上线前,做一些容灾演练,这个期间需要保证每个组件都能够足够健壮了,在集群内的单个组件发生状况了,守护程序能够主动发现并拉起或者报警,备用组件能够即时的跟进,保证不会因为某一个组件出现问题,而导致服务器长时间无法访问。

 

我们一般这么做,正在运行的服务器中,随机kill其中一个memcache主机,看守护程序是否可以快速拉起,会不会出现脏数据。或者在DB方面,kill其中一个主机,看是否实现数据分片后存储节点的冗余与互备,在出故障时,有效保障数据处理不间断

 


 

5.关键接口测试

每个系统都有一些关键接口,接口的关键与否和业务有很大关系。有时候我们需要拿到这些关键接口的指标评估,比如关键接口的评估标准,优化前后的数据对比和性能提升对比等。

关键接口测试要做到安全稳定,性能提升的前提要保证接口的安全和稳定。

 

以上这些是我们一般会用到的测试方式,几种测试方式可以组合为一种测试方案,流程也会不相同。当然了一般情况下,我们会把这些流程都走一遍,保证不遗漏,数据更全面。


 

三,上线服务器的数量的预估

 

 评估上线服务器数量,我们需要一步步反推。比如,上线的某一段周期内,会有多少流量(用户)导入,单台服务器能够承受多少流量,有了这两个值,预估的服务器数量=拿总流量/单台服务器承压流量。当然了,总会有些误差,我们一般还要多处20%的预留,预留你懂的,总有意外,出来了意外总不能去甩锅吧。

 

上面我们讲了2个关键指标,总流量,单台服务器承压流量。这里的流量需要和业务需求挂钩的,比如BS架构的互联网产品,PV(点击)是流量单位,而CS架构的游戏,则用户是流量单位。每种业务不同评判的标准不尽相同,需要根据自己的需求来。下面我以游戏为例来举栗。

 

前面的测试已经帮我们拿到重要数据了,TPS,那TPS如何来转换为用户呐?要想讲清这个,我们先回顾下TPS概念,TPS是每秒的事务数,在游戏里这里的单个事务是指一个用户所执行的一组指令所耗费的时间,是一组而不是一个,为何是一组,因为每个指令耗费的时间不尽相同,单个指令的TPS毫无疑义,一组才能代表一个用户的真正行为。此时TPS就可以间接转换为用户数了,但还要考虑一个比率问题,真实用户是无法达到机器人的水准的,也就是tps转换用户数要变大。比如压测出的机器人tps是1000,机器人执行一组指令需要160s,而真实用户执行需要1605s,此时的最终单台服务器承压用户数为1000*10=10000。

 

对于总流量,我们可以和运营人员沟通,这次导入的新用户指标是多少,再根据以往的经验或者公测数据,就能估算出预计的PCU(同时在线用户)和DAU是多少。有了PCU,总流量就知道是多少了,最终的服务器数量也可以预估出来了。

 

对于B/S架构的互联网产品,我只能浅略的讲下之前的经验了。之前做的时候,上线前能够向运营拿到的数据是推广量,一个PV(点击)算一个推广量单位。我们是这么处理的,按照用户的习惯,我们的产品一般会在10:00-14:00,16:00-22:00期间达到访问高峰,也就是10个小时,如果单台服务器的tps为10000,单台服务器的可以承受的日PV=10000*10*1(相当于按最高TPS访问10个小时,不同的应用场景会有一些不同),有了日PV,那么我们预估出服务器数量应该是:总推广量/单台服务器的日PV。

 


 

四、后续

以上就是一些对服务器上线前的一些测试流程,通过这些流程,我们就可以对服务器有一个大概的了解,比如 服务器瓶颈会在哪里 ,出现特殊情况,如何做预案等。

 

另外测试数据只能提供一个初始值,正在的上线的时候,会出现一些其他的状况,需要针对测试的数据进行修正,如果偏差比较大,要对不完善的方案进行改进。我们是不可能预估出真实的数据的,只能无限接近这个值。

 

 还有一些其他的测试方案和流程我没有讲到,以后再表。测试流程的设定应该根据自身情况来,没必要每步必做,大公司有大公司的规范,小公司有小公司的流程,选择自己适合的最重要。

 

 


转载于:https://my.oschina.net/u/1859679/blog/717322

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux 服务器资源评估公式主要是用于评估服务器的硬件资源是否足够满足用户的需求。以下是一个简单的评估公式: 1. CPU 资源评估:通过查看服务器的 CPU 核心数和频率,估算服务器的处理能力。常用的公式是: (CPU 核心数)×(每核心频率)= CPU 总频率 (CPU 总频率)/(每个请求的平均处理时间)= 并发请求数量 2. 内存资源评估评估服务器的内存容量是否足够存储和处理用户请求。常用的公式是: (每个请求的内存占用量)× (并发请求数量)= 要求的总内存容量 3. 存储资源评估评估服务器的存储容量是否足够存储用户数据。常用的公式是: (每个用户数据的平均大小)× (用户数量)= 存储需求 4. 网络资源评估评估服务器的网络带宽是否足够传输用户数据。常用的公式是: (每个请求的平均数据量)× (并发请求数量)= 需要的网络带宽 以上公式只是一个初步的评估方法,实际评估时还需要考虑服务器的负载均衡、缓存优化等因素。此外,还需要结合实际业务场景和预期的系统性能要求来进行资源评估。 总之,服务器资源评估公式应该是一个综合考虑各项硬件资源和实际需求的方法,以确保服务器能够稳定运行并满足用户的需求。 ### 回答2: Linux 服务器资源评估公式是指根据服务器的配置和使用情况,来评估服务器所需的资源。这些资源包括CPU、内存、磁盘空间和网络带宽等。 首先,对于CPU资源评估,可以使用每个核心的利用率来衡量。通过CPU使用率和负载均衡来确定服务器是否需要更多的CPU资源。如果CPU使用率持续高于80%且负载均衡过高,就可能需要增加CPU资源。 其次,对于内存资源评估,可以通过监测内存使用率和交换空间使用情况来确定是否需要增加内存。如果内存使用率高且交换空间持续使用,就可能需要增加内存。 再次,对于磁盘空间评估,需要考虑服务器上的数据量和文件大小。通过检查磁盘使用率和数据增长率,来确定是否需要增加磁盘空间。如果磁盘使用率快速增长且接近满载,就需要增加磁盘空间。 最后,对于网络带宽评估,可以通过监测网络流量和带宽使用率来确定是否需要增加带宽。如果网络流量太大且带宽使用率持续高于80%,就可能需要增加带宽。 综上所述,Linux 服务器资源评估公式需要考虑CPU、内存、磁盘空间和网络带宽等因素,并通过监测相关指标来确定是否需要增加相应的资源。对这些指标进行连续监控和评估,可以及时对服务器进行资源调整,以保证服务器的正常运行和性能优化。 ### 回答3: Linux服务器资源评估公式是用于评估服务器所需资源的公式。 服务器资源评估的目的是确定服务器所需的处理能力和存储能力,以确保服务器能够正常运行,并满足用户的需求。 一般来说,服务器的资源评估公式包括以下几个方面: 1. CPU资源评估:根据服务器所需处理的请求量和请求类型,以及所需的处理速度,可以使用公式:CPU资源 = 平均请求率 * 平均请求处理时间。 2. 内存资源评估:根据服务器所需处理的数据量和访问模式,以及所需的内存大小,可以使用公式:内存资源 = 平均数据量 * 平均访问时间。 3. 存储资源评估:根据服务器所需存储的数据量和访问模式,以及所需的存储空间,可以使用公式:存储资源 = 平均数据量 * 平均存储时间。 4. 网络资源评估:根据服务器所需传输的数据量和传输模式,以及所需的网络带宽,可以使用公式:网络资源 = 平均数据量 * 平均传输时间。 在实际应用中,根据具体情况,可以进一步细化和调整这些公式,考虑服务器的负载均衡、容错能力、安全性等因素。 通过对服务器资源进行评估,可以帮助管理员合理规划服务器硬件配置,提高服务器的性能和稳定性,满足用户的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值