一、性能指标

我们知道服务器,有 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。

四、后续

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

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

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

服务器每秒钟执行命令数量是什么_如何合理的评估上线服务器数量相关推荐

  1. 服务器每秒钟执行命令数量是什么_日常学习笔记.md

    ## ShedLock ShedLock不是一个`定时任务`框架,而是一个`保证定时任务在分布式环境中的合理执行`的辅助框架,保证定时任务在分布式环境中同一时间最多`只执行一次`.同时一个任务在执行时 ...

  2. 服务器每秒钟执行命令数量是什么_全国自考互联网及其应用模拟试卷(一)及答案.doc...

    2010年全国自考互联网及其应用模拟试卷(一) 一.单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内.错选.多选或 ...

  3. 绕过宝塔禁止的php函数,宝塔disable functions函数全被禁命令执行+加域服务器如何无限制执行命令...

    本地搭建实验环境时遇到了不少小问题 实验环境2008 R2 宝塔搭建的IIS discuz3.2X 手动上传shell 冰蝎连接 (ps:有表哥使用冰蝎的时候提示文件存在但是无法获取密钥,解决办法,使 ...

  4. 我的世界自动开关服务器,我的世界自动重启脚本方法_我的世界如何让服务器自动重启_游戏堡...

    我的世界如何让服务器自动重启:<我的世界>游戏中怎么样才能让服务器自动重启?下面游戏堡小编给大家介绍的是我的世界自动重启脚本方法,小伙伴们一起来看看吧. 首先,你要有一个对应你服务器核心的 ...

  5. dmsetup remove_all 这命令干啥的_分一个小知识,服务器上的一个解压与压缩文件的命令....

    在服务器上对文件做解压操作,是一件非常常见的操作,如安装软件就有很多是要用的到这个操作的.去官网下载一个压缩包,然后解压,编译,再安装.当然网上是能找到相应的命令操作.但是每次都要去找命令,就算记住了 ...

  6. centos7 ifconfig命令找不到_在vbox中创建Centos7服务器集群(1)-- Linux服务器安装

    服务器集群 1.工欲善其事必先利其器,首先下载Centos7系统镜像 Centos7-Linux系统网址:http://mirrors.163.com/centos/7/isos/x86_64/ Ce ...

  7. 此服务器的时钟与主域控制器的时钟不一致_中移动“超高精度时间同步服务器”开标,两家中标...

    8月25日,中国移动发布<2020年至2022年同步网设备集中采购_中标候选人公示>公告. 两家中标.同步网技术比较小众,但是同步网是5G承载网的重要一环,分享一下,供大家参考. 中标情况 ...

  8. 我写了一个脚本,可在“任意”服务器上执行命令!

    冰河之前维护着上千台服务器组成的服务器集群,如果每次需要在服务器上执行命令的时候,都要手动登录每台服务器进行操作的话,那也太麻烦了.你想想,如果在上千台服务器的集群中,每台服务器中只需要简单的执行一个 ...

  9. python批量运行cmd_python 批量ssh并执行命令

    1.安装paramiko模块 pip install paramiko 可以修改ssh连接超时时间,windows下路径:在安装路径Python\Python36\Lib\site-packages\ ...

最新文章

  1. flask与简单的form表单
  2. Java学习笔记(5)——泛型
  3. (Spring)使用注解开发
  4. 实录分享 | 计算未来轻沙龙:对话系统研究进展(视频 + PPT)
  5. Sklearn参数详解—聚类算法
  6. 移动app部分机型无法唤起h5支付宝支付_用这段代码对App说:喂,醒醒!App,到你出场了!...
  7. C#LeetCode刷题之#20-有效的括号(Valid Parentheses)
  8. ssh tar_2015年最佳情侣:tar和ssh
  9. vscode code runner配置
  10. 泉州有了一个水务大脑,用AI守护“绿水青山”
  11. java画笑脸_java的画图运用。一个简答的笑脸程序☺
  12. linux centos 访问根目录 not accessable
  13. MATLAB求解二元(多元)函数极值
  14. 【心电信号】基于多种滤波去除心电信号基线漂移含Matlab源码
  15. android金额小数点后面和前面字体大小不一致的实现
  16. 小程序商城+进销存系统——通用模板
  17. Python采集喜马拉雅的音频,随时随地,听我想听
  18. Revit2016 笔记08 - 屋顶与洞口
  19. matlab计算空间坐标,通过matlab计算卫星位置
  20. 前端根据银行卡号获取该银行卡的信息

热门文章

  1. 迁移学习---inceptionV3
  2. 开灯变形问题(枚举法)
  3. 解决启动flanneld失败的方法
  4. springmvc学习笔记(17)-上传图片
  5. 支持向量机—核函数源码分析(2)
  6. 重写Oracle的wm_concat函数,自定义分隔符、排序
  7. C#进阶系列——WebApi 接口测试工具:WebApiTestClient
  8. SpringBoot基础重难点
  9. IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行
  10. 最新版本sublime text3注册码