想知道你的服务器性能怎样吗?

简介: 想知道你的服务器性能怎样吗?

0.jpg

开发完了自己的服务器,是不是想知道他的响应速度够不够快、有多抗压、能承受多大的访问量呢?嗯,没错,我也很好奇,所以这两天玩了玩测试的东西,这里给大家分享一下。


Artillery



想做压力测试当然要有相应的工具,于是第一步我就去 npm 上搜了一下,结果发现工具挺多,可惜的是大部分都已经停止更新和维护了,而目前还在维护的并有一定使用者的发现了 loadtest 和 artillery 这两个,最后选择了 star 数最多的 artillery (其作者目前很积极,差不多每条 issue 都有人回答吧)实战一下。


安装:

npm install -g artillery


测试:

artillery quick --duration 30 --rate 10 -n 20 https://artillery.io

测试时长 30 s,每秒 10 条请求,20 个用户,测试了下 artillery 自己的官网。

看看下图的结果:640.jpg


总共 30*10*20 = 6000 次请求,没错,全部正常完成,如果有错误发生或丢包等情况会在最后提示,请求到响应的时间消耗也很明显的可以看出来,min、max、median、p95、p99分别表示最小、最大、平均、完成95%、完成99%请求或发出请求到响应完成的时间长度,最后本次测试的记录也会在当前工作目录下自动生成一个 json 文件。


更多配置亦可编写 yml 文件然后直接执行此文件,感兴趣的话可以去官网看看详细的资料,这里之所以不再赘述是因为我更喜欢另一种测试工具。


ab



好吧,我承认向传统势力低头了,ab 就是 apache 的一款测试工具,历史也算是很悠久了。


安装:

MacOS 自带,不用安装,其它系统怎么安装?嘿,我管不着,谁让我是用 Mac 的人。


测试:

ab -c 1000 -t 10 https://baidu.com/

并发数 1000,测试时间 10 s,没错测测百度玩玩。

看看下图的结果:640 (1).jpg

好吧,感觉每条数据都有价值。

  • Concurrency Level:  并发数
  • Time taken for tests: 测试所用时间
  • Complete requests: 完成的请求
  • Failed requests:  失败的请求
  • Requests per second: 吞吐量=完成的请求/测试所用时间
  • Time per request: 两个名称相同,第一个表示完成整个请求平均时间
  • Time per request: 第二个表示服务器处理请求的平均响应时间

后面一堆百分比表示完成这个比例的请求所花费的时间。

吞吐量越大服务器性能越好,当然这与硬件有很大的关系,至于请求相关的时间当然是越短越好。

测试完了发现 ab 的数据更整洁,另外 ab 的测试结果可以通过 -w 指定位置输出 html 格式的静态文件,当然更多测试相关的参数设置还是参考官网吧。


ab 的并发数设置问题



如果你在测试的时候并发数设置的较大,那么你可能会碰到这种问题:

socket : Too many open files(24)

这是因为系统本身默认的 open files 数值过小导致的,可以通过以下指令修改:

ulimit -n 10000

这里设置为10000(必须比系统允许的最大值小)。


怎么查看系统的最大值:

$ sysctl kern.maxfiles
$ sysctl kern.maxfilesperproc

如果最大值你还嫌小的话,也可以配置(数值自己设置即可,这里只是示例):

$ sudo sysctl -w kern.maxfiles=1048600
$ sudo sysctl -w kern.maxfilesperproc=1048576

压力测试对分析性能瓶颈还是很有帮助的,关于测试就写这么多吧

目录
相关文章
|
SQL 消息中间件 缓存
记一次性能优化,单台 4 核 8G 机器支撑 5 万 QPS
需求描述如下:用户进入首页,从数据库中查询是否有合适的弹窗配置,如果没有,则继续等待下一次请求、如果有合适的配置,则返回给前端。这里开始则有多个条件分支,如果用户点击了弹窗,则记录用户点击,并且在配置的时间内不再返回配置,如果用户未点击,则24小时后继续返回本次配置,如果用户点击了,但是后续没有配置了,则接着等待下一次。
记一次性能优化,单台 4 核 8G 机器支撑 5 万 QPS
|
存储 监控 测试技术
【游戏】服务器性能测试(三) 性能指标
一、引言 在做游戏服务器性能测试的时候,我们需要通过一些指标来判断服务端是否存在性能问题,由于绝大多数的服务端都是架设在Linux服务器上,因此本篇是以Linux系统为前提,简单介绍常用的性能指标。 二、服务器指标 现如今的游戏服务器一般为分布式架构如图1。一个区的服务端由多个节点组成,通过这些节点来完成复杂的业务功能交互以及扩大人数承载。并不是每个节点都会占用一台物理机,通常是一个区的节点都放在一台物理机上(多区公用的除外)。这样每个节点进程就不能完全独占CPU,内存,网络等资源。而进行服务器性能测试也就是确保这些节点能够在一台机器上满足预定的设计要求。
1490 0
【游戏】服务器性能测试(三) 性能指标
|
8月前
|
监控 测试技术 Apache
如何测试服务器性能?
通过以上步骤,您可以全面评估服务器的性能,找出潜在问题,并采取措施来提高服务器的性能和稳定性。这对于确保服务器在实际生产环境中能够高效运行非常重要。
434 1
|
8月前
|
运维 监控 测试技术
负载测试:系统性能护航
负载测试:系统性能护航
|
监控 网络协议 Cloud Native
服务器性能如何优化?(建议收藏)
服务器性能如何优化?(建议收藏)
1298 0
|
测试技术
开启irqbalance提升服务器性能
操作系统 性能调休   公司有次压测存在一个问题:CPU资源压不上去,一直在40%已达到了性能瓶颈,后定位到原因,所在的服务器在压测过程中产生的中断都落在CPU0上处理,这种中断并没有均衡到各个CPU,导致单个CPU过载而形成瓶颈。
6760 0
|
网络协议 容灾 Java
【游戏】服务器性能测试(六) 简单压测工具之高并发网络篇
对网络游戏服务器进行性能压测时,压测工具一般是模拟大量客户端连接服务器进行协议接口请求并发来压测服务器,因此就需要具有高并发的网络模块支持。本篇主要介绍我所了解的网络相关的知识。 当调用一个IO函数例如下面的recv函数,程序会进入阻塞,等待数据准备好,如果数据没有准备好将一直阻塞在recv处,直到有数据从系统内核拷贝到用户空间(即同步IO),然后IO函数返回读取的数据。还有recvfrom、send、sendto、accept、connect也是同理。
1065 0
【游戏】服务器性能测试(六) 简单压测工具之高并发网络篇
|
容灾 测试技术 数据库
【游戏】服务器性能测试(二)容灾
一个好的服务器架构在设计时不仅需要根据游戏类型和业务需求来评估,还需要将容灾考虑进去,以下罗列了一些容灾相关的指标(非完全): 节点不能存在单点故障,即某个节点宕机后不影响其他节点的正常运行,当宕机节点启动后,可以重新连接至其他节点并正常处理业务功能。 节点需要支持可快速拉起,即某个节点宕机后可以快速被重新启动,并且业务功能和关联的节点能够正常接入而不受影响。 服务的数据丢失不可超过5分钟,且核心数据(或关键数据)不可丢失必须及时入库,最好还可以支持通过日志或者其他形式的记录进行数据的快速恢复。
880 1
【游戏】服务器性能测试(二)容灾
|
存储 弹性计算 运维
有哪些因素会影响云服务器访问速度?
对一个网站来说,网站的访问速度十分重要,是网站友好体验中最基本的一项,云服务器的速度是可以反映出设备的质量问题的,如果想要有更快的网站访问速度。那么,就需要了解影响云主机访问速度的一些因素。
621 0
|
Java 测试技术 调度
关于服务器性能的一些思考
一、服务器性能 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt,其中load、cpu、mem来衡量机器性能,qps、rt来衡量应用性能。 一般情况下对于机器性能,load、cpu、mem是越低越好,如果有一个超过了既定指标都代表着可能
1929 0