最近公司的node项目准备要上线了,所以要做一下压力测试。
架构采用express, 测试的页面 127.0.0.1/test 返回一个json
在本地mac下跑了一下, -n 10000/20000/50000 -c 100 压测的结果rps 基本在2000左右,虽然不知道这个结果算不算及格,但是感觉上还是挺快的。
我也在百度上看来很多关于node压测的文章,人家那个压测结果动不动就上万的。这个真心不知道怎么回事儿,万望解答!!!!!!!
而且在测试的过程中发现偶尔会不太稳定,到最后两轮压测的时候会出现超时的情况。
也是第一个问题
1、出现超时的情况是我node本身的问题,还是ab测试的问题?如果是node问题应该如何优化?如果是ab的问题,那么用什么压测工具比较稳定,而且贴近真实
我把程序放到阿里云上,阿里云的服务器好歹也是4核8G,但是服务器本地压测的结果还不如我的电脑,同样是测试方式, RPS基本也就是 1100左右,差了将近一半。后来我在服务器上还装了pm2 ,用pm2 开了两个进程的
但是测试的结果完全没有改变,而且我感觉在压测的时候,两个进程的CPU和内存并没有变化。完全懵逼了..............
第二个问题
2、pm2 说是可以负载均衡增加负载能力的,但是压测并没有提高,请问大神们能不能指点一下
最后我在本地的环境中通过另一台机器,用局域网访问我的本地服务,压测的结果也是比较意外。
还是同样的压测方式,结果RPS只有120多,完全懵逼了..............
大神们啊,能不能帮忙看一下,就一下下
你的测试结果我认为还是很真实的.
比方说,你在Mac上测试,RPS是2000,假设你的Mac的处理器核心数是4个,那么每个处理器的RPS就是2000/4=500,也就是1个处理器核心1秒处理500个请求,那么每个请求的耗时就是1/500=0.002秒/请求=2毫秒/请求.而每2毫秒处理一个请求,速度其实还是很快的,不信你自己打开你的浏览器去看看你访问你认为快的网站,看看它们的主请求的响应时间,你就知道2毫秒处理一个请求速度并不慢了.我自己用原生PHP写的Web程序,读请求的响应时间也能做到5毫秒以内的级别,环境是Ubuntu i5-3230M PHP(开启opcache).
你再参考一下Stack Overflow这种比较大型的网站的数据:
可见其每秒处理请求数RPS也才2424.
http://www.infoq.com/cn/news/2016/03/Stack-Overflow-architecture-insi
2016年02月09日数据:
HTTP请求数 209,420,973 (每秒处理请求数RPS=209420973÷(24×3600)=2424)
网页加载次数 66,294,789 (每秒处理PV数=66294789÷(24×3600)=767)
HTTP流量发送有 1,240,266,346,053 字节 (1.24 TB)
接收数据总量 569,449,470,023 字节(569 GB)
发送数据总量 3,084,303,599,266 字节 (3.08 TB)
SQL查询数(HTTP请求) 504,816,843
Redis命中数 5,831,683,114
Elastic查询次数 17,158,874
标签引擎请求次数 3,661,134
SQL查询耗时 607,073,066 毫秒 (168小时)
Redis命中耗时10,396,073 毫秒 (2.8小时)
那些动不动就C10K的,确实没必要.