如何做服务器压测-入门级

今天心血来潮,想做下压力测试,以前重来没有试过

工具

  1. wrk,根据官方的介绍

wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi->core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and >kqueue.

wrk是一个现代的HTTP基准测试工具,能够在单个多核CPU上运行时产生显着的负载。它将多线程设计与可
扩展事件通知系统(如epoll和kqueue)相结合。

总之这是一个http测试工具,用法可以自行上网查询

  1. pm2,根据pm2的介绍我们可以使用,pm2 monit来查看性能数据,或者使用keymetrics(pm2的在线可视化性能检测工具)来监测性能,使用方法自行搜索

概念

在开始测试之前,我们需要了解一下 系统吞吐量(TPS)、用户并发量、性能测试概念和公式,我们关心的也大多都是并发量,tps,和响应时间这3者,wrk中也正好有对应三者的测试结果

如何做服务器压测-入门级_第1张图片
image.png

我们用wrk测试了一下,可以看到在300的并发量下,持续测试10s的时间一共产生了1w个请求,平均响应时间是266ms,但是最大的已经超过了2s,tps是1k左右,但是也可以看到159个左右的请求连接超时
同时我们自己使用express搭建一个简单的服务器,使用pm2来看看硬件性能的使用情况


如何做服务器压测-入门级_第2张图片
image.png

可以看到cpu已经满载运行,内存使用了126m
压测结束后


如何做服务器压测-入门级_第3张图片
image.png

cpu和内存瞬间降低,表示了我们的服务器身体还是挺好的

开始测试

目标

首先我们需要定下目标,和环境,目前我使用分配了i7-4710mq的4线程和内存的4g给虚拟机,我们需要express默认主页的百万日pv,根据系统的平均并发用户数和并发数峰值如何估算这文章的算法,我们如果要实现100w的日pv那么我们需要服务器的至少要会接到15个请求每秒左右并且响应时间要小于50ms(这个是我从淘宝首页看到的)才正常但是我们的页面十分简单,我们要求平均20ms内响应90%响应时间定为36ms,那么我们服务器需要处理的并发量就是45.
总的来说,我们需要在45的并发下达到平均响应时间20ms,90%响应时间为36ms

初次测试

如何做服务器压测-入门级_第4张图片
image.png

我们在45并发下发现我们的平均响应时间为34多ms,每秒处理1k请求,超过我们的需求

优化

当前我们是处于单进程,我们需要使用pm2 内置的负载均衡,开启多线程


如何做服务器压测-入门级_第5张图片
image.png

我们开启了4个进程,可以看到现在的响应时间很接近20毫秒了

总结

由此做了个初略的结论,在百万级别的pv下nodejs还是可以支持的住的

参考

  1. https://huoding.com/2017/05/31/620?utm_source=tuicool&utm_medium=referral
  2. http://www.chinaz.com/web/2016/0817/567752.shtml

你可能感兴趣的:(如何做服务器压测-入门级)