新睿云

> 知识库 > 服务器测试全网最详细的教程!

服务器测试全网最详细的教程!

作者/来源:新睿云小编 发布时间:2020-01-07

WEB 服务中,对于不同的请求,响应速度(性能)是不一样的。对于静态文件的响应一般会很快,尤其是使用了前端缓存技术的(例如 nginx 缓存、varnish缓存、CDN 缓存等)。

下面将以静态页面的测试为例,详细讲解 WEB 服务性能测试方案。

在只有一台裸机的情况下,响应速度会受限于服务器的 CPU、内存、磁盘IO、数据库QPS、文件系统 等,所以需要在测试的时候,实时监控系统的情况。

 一、准备测试环境

请根据实际情况组建测试环境,如果要测试线上 WEB 服务,不怕影响服务质量的话,也可直接使用线上环境。

下表是我使用过的一个测试环境。

网络

公司内网 VLAN

WEB Client 机器配置

CPU:Intel(R) Xeon(R) X3430 2.40GHz 4核

WEB Server 机器配置

CPU:Intel(R) Xeon(R) X5650 2.67GHz 24核

WEB Server

Nginx 1.4.7

测试工具

Apache Bentch 2.3,简称 ab

测试静态页面(大小4K)

http://nginx.test.com/

请求总数

根据需要自定义,请求太少测试没意义,太多很耗时间。

一般在监控性能的时候,请求多一点,例如 1M,延长测试过程,方便查看;

在测试并发数的时候,请求少一点,例如 10W,可以快速得出并发响应数。

测并发数

1, 50,100,150,200,300,500,1000 ... ,根据需要自定义

性能记录工具

dstat

服务器性能参数

CPU负载、磁盘读写速度、网络流量、内存读写速度、系统负载

二、测试步骤

1、搭建 WEB Server过程略过

2、安装模拟访问工具 ab

如果机器已经安装了 Apache httpd ,则一般都自带 ab 工具,使用命令 which ab 可以找到 ab 的安装路径。如果找不到 ab 命令,请安装 httpd 即可(Redhat):yum install httpd。

3、安装性能查看工具

Redhat:yum install -y dstat

4、测试命令以及参数

4.1、ab 命令参数

直接运行 ab 可以得到使用帮助,这里说一下 ab 命令的常用参数:

-n

客户端发起的总请求数

-c

客户端并发请求数,即有多少个用户同时发起请求

-k

HTTP 长连接,默认没有 -k 参数,使用的是短连接

url

[http[s]://]hostname[:port]/path

 

例子:ab -n100000 -c 200 http://nginx.test.com/

NOTE:一些低配置的机器,在运行 ab 命令的时候可能会出现问题,主要是打开文件数太小导致的。并发数越高,越容易出现这样的问题。

4.2、测试结果解说

测试进度 

测试进度

 测试结果

测试结果

注: 1、mean是平均数的意思

2、第一个Time per request代表每个链接上单个请求的平均响应时间

   第二个Time per request所有链接合计后单个请求的平均响应时间

   它们之间的关系是:Tpr1=Tpr2*n,这里的Tpr1=23.054,Tpr2=0.115,n=200。

3、下面将 Requests per second 简称为 RPS,第一个 Time per request 简称为 TPR

  相应时间统计   

相应时间统计

ConnectionTimes 可以看出,请求在建立到响应的过程中,哪个环节下消耗的时间比较多。

测试 WEBServerd的最大(佳)并发数

打开网页的速度(取决于请求响应时间)是一个很重要的用户体验。

然而请求响应时间存在小部分的极大值和极小值,那么平均响应时间不能真实反映请求响应速度,所以取95% 在某时间阀值内(例如25ms)完成比较合理。

所以假设业务的需求是:95% 请求的响应时间 < 25ms 。

假定请求总数不变,每次测试时改变并发数连接数,倘若测试结果中,有95%的请求能在25ms内处理完成,则认为当前的并发响应数是最大(佳)并发数。

同时记录服务器 CPU、内存、系统、IO、网络流量 的情况。

对于ab -n 100000 -c 200 http://nginx.test.com/,取 3 次的平均值作为测试结果。

5、系统性能分析命令

dstat -h可以获取帮助信息

命令解释:dstat -t -c -dD sda1 -nN eth0-gyl

-t

显示时间戳

-c

统计所有CPU 状态

-dD sda1

统计磁盘分区 /dev/sda1 的读写速度,请根据实际情况指定分区,这里为 /usr/local/nginx/html/index.html 这个文件所在的分区

-nN eth0

统计网卡 eth0 的流量,请根据实际情况指定网卡

-g

统计内存页换入换出速度,一般希望的值是 0 0

-y

统计 CPU 中断 int 和 上下文切换 csw 信息

--tcp

tcp 连接状态

-l

统计系统负载信息

系统性能分析命令 

系统性能分析命令

在客户端运行 ab 测试命令之前,预先运行 dsetat 命令,查看测试前机器的状态;等到测试的时候,再对比一下测试前后系统的状态。

6、测试例子结果分析

这里想要测试 WEB Server 的大体性能,只需要测试 Requests per second 的值即可。

6.1、短链接并发测试

每个命令运行 3 次,然后取平均值

ab -n 100000 -c 1 http://nginx.test.com/

ab -n 100000 -c 50 http://nginx.test.com/

ab -n 100000 -c 100 http://nginx.test.com/

……

6.2、长链接并发测试

ab -n 100000 -c 1 -k http://nginx.test.com/

ab -n 100000 -c 50 -k http://nginx.test.com/

ab -n 100000 -c 100 -k http://nginx.test.com/

……

6.3、测试结果

Complete requests

Concurrency Level

短链接

长链接

Time taken for tests

Requests per second

Time taken for tests

Requests per second

100000

1

85

1183

54

1839

100000

50

9.8

9756

7.7

12041

100000

100


6249



100000

150


7432



100000

200


7996



100000

250


8584



100000

300


7313



100000

350


7189



100000

400


8335



100000

450


9545



100000

500


9866



100000

550


9965



100000

600


9685



100000

650


10124



100000

700


10053

55

12297

100000

750


10204



100000

800


9731



100000

850


9921



100000

900


9909



100000

950


9908



100000

1000


9067



100000

1050


9871



100000

1100


7669



100000

1150


8849



 

使用excle做成表格,使测试结果更加形象

并发数 

并发数

从图中可知:WEBServer 对于请求 http://nginx.test.com/每秒的最大响应数为 1W 左右。

Nginx 官网说能达到 5W RPS,可见当前的 WEB Server 离那个目标还差很远。

下图是测试过程中,WEBServer 的性能监控记录:dstat -t -c -dD sda1 -nN eth0 -gyl

测试前

测试前 

测试前

短链接测试时(并发 700 )

短链接测试 

短链接测试

长连接测试时(并发 700 )

长链接测试 

长链接测试

测试前后,变化较大的有:

l  网卡流量

l  CPU 中断数量以及上下文切换数

l  1分钟之内的系统负载

从性能监控记录看,进行测试时,系统性能还处于一个比较空闲的状态,负载较低。

结合测试的 RPS 和 系统性能,发现 WEB Server 还有很大的进步空间,需要进行更加深入的专业优化。

当然,这是一个很简单的测试,如果涉及到比较负载的业务等,系统各方面的负载也会相应的增加的。

测试结果详细记录表

Document Path

/

Document Length

555 bytes

Concurrency Level

1

50


Time taken for tests

84.498 seconds



Complete requests

100000

100000


Failed requests

0



Write errors

0



Keep-Alive requests

-



Total transferred

75.3MB



HTML transferred

52.9MB



Requests per second

1183.47



Time per request 1

0.845 [ms]



Time per request 2

0.845 [ms]



Transfer rate(received)

911.87 KBps



Connection Times (ms)

Connect

0+/-0.4















Processing

0















Waiting

0















Total

1















Percentage of the requests served within a certain time (ms)

50%

1



66%

1



75%

1



80%

1



90%

1



95%

1



98%

1



99%

2



100%

205




热门标签
new year
在线咨询
咨询热线 400-1515-720
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待