ITPub博客

首页 > 数据库 > 数据库开发技术 > 想知道你的服务器性能怎样吗?

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

原创 数据库开发技术 作者:凌虚 时间:2017-04-01 00:24:49 0 删除 编辑


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


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



压力测试对分析性能瓶颈还是很有帮助的,关于测试就写这么多吧,另外不知道你有没有发现公众号跟以前不同了呢?没错,微信官方邀请我开通了原创认证了,以后的文章你们也都可以写留言了,当然这得感谢各位读者长期的支持,么么哒!





原文作者:系统架构师Go;如有侵权,请联系管理员删除。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2017-03-30

  • 博文量
    154
  • 访问量
    63679