前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想知道你的服务器性能怎样吗?

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

作者头像
凌虚
发布2020-07-20 10:35:56
1.6K0
发布2020-07-20 10:35:56
举报

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

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 自己的官网。

看看下图的结果:

总共 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,没错测测百度玩玩。

看看下图的结果:

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

  • 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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Node Python Go全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档