NGINX压力测试

硬件配置

型号

# dmidecode | grep "Product Name"

Product Name: VMware Virtual Platform
Product Name: 440BX Desktop Reference Platform

CPU

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq

 Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz

内存

# dmidecode|grep -P -A5 "Memorys+Device" | grep Size |grep -v Range | cat -n

1           Size: 16384 MB
2           Size: 4096 MB

软件环境

操作系统

# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

服务版本

# /usr/local/openresty/nginx/sbin/nginx -v

nginx version: openresty/1.11.2.4

测试软件

# ab -V

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

并发测试

说明:测试基于Linux系统。

 1000并发

测试1000并发,处理10000请求:

# ab -c 1000 -n 10000 http://10.27.88.50/index.html

Benchmarking 10.27.88.50 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        openresty/1.11.2.4
Server Hostname:        10.27.88.50
Server Port:            80

Document Path:          /index.html
Document Length:        612 bytes
Concurrency Level:      1000
Time taken for tests:   0.874 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      8510000 bytes
HTML transferred:       6120000 bytes
Requests per second:    11437.38 [#/sec] (mean)
Time per request:       87.433 [ms] (mean)
Time per request:       0.087 [ms] (mean, across all concurrent requests)
Transfer rate:          9505.09 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max
Connect:        0    2   5.9      0      27
Processing:     4   12  27.8      7     801
Waiting:        0   11  27.7      7     801
Total:          5   14  29.9      7     807

Percentage of the requests served within a certain time (ms)
  50%      7
  66%      8
  75%      8
  80%      8
  90%     38
  95%     59
  98%     61
  99%     62
 100%    807 (longest request)

 2000并发

测试2000并发,处理50000请求:

# ab -c 2000 -n 50000 http://10.27.88.50/index.html

Benchmarking 10.27.88.50 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests

Server Software:        openresty/1.11.2.4
Server Hostname:        10.27.88.50
Server Port:            80

Document Path:          /index.html
Document Length:        612 bytes

Concurrency Level:      2000
Time taken for tests:   2.689 seconds
Complete requests:      50000

Failed requests:        1
   (Connect: 0, Receive: 0, Length: 1, Exceptions: 0)

Write errors:           0
Non-2xx responses:      1
Total transferred:      42549516 bytes
HTML transferred:       30599587 bytes
Requests per second:    18593.35 [#/sec] (mean)
Time per request:       107.565 [ms] (mean)
Time per request:       0.054 [ms] (mean, across all concurrent requests)
Transfer rate:          15451.92 [Kbytes/sec] received


Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0   20 137.3      0    1004
Processing:     1   18 121.7      4    1605
Waiting:        0   18 121.7      4    1605
Total:          2   38 236.7      5    2608


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

  50%      5
  66%      5
  75%      5
  80%      5
  90%      8
  95%      8
  98%    404
  99%   1406
 100%   2608 (longest request)

 3000并发

测试3000并发,处理100000请求:

# ab -c 3000 -n 100000 http://10.27.88.50/index.html

Benchmarking 10.27.88.50 (be patient)

Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests

Server Software:        openresty/1.11.2.4
Server Hostname:        10.27.88.50
Server Port:            80


Document Path:          /index.html
Document Length:        612 bytes

Concurrency Level:      3000
Time taken for tests:   5.065 seconds
Complete requests:      100000
Failed requests:        2

   (Connect: 0, Receive: 0, Length: 2, Exceptions: 0)

Write errors:           0
Non-2xx responses:      2
Total transferred:      85099032 bytes
HTML transferred:       61199174 bytes
Requests per second:    19744.76 [#/sec] (mean)
Time per request:       151.939 [ms] (mean)
Time per request:       0.051 [ms] (mean, across all concurrent requests)
Transfer rate:          16408.79 [Kbytes/sec] received
 
Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0   55 329.4      0    3008
Processing:     2   25 185.9      4    3224
Waiting:        1   25 185.9      4    3224
Total:          3   81 433.0      4    4223

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

  50%      4
  66%      4
  75%      6
  80%      6
  90%     25
  95%    116
  98%   1206
  99%   3011
 100%   4223 (longest request)

测试总结

数据汇总

请求连接数

并发数

请求失败数

每秒处理请求数

一次并发数请求响应时间(ms)

全体请求完成时间(s)

请求成功率

10000

1000

0

11437

87.43

0.874

100.00%

50000

2000

1

18593

107.57

2.689

99.998%

10000

3000

2

19744

151.94

5.065

99.998%

数据分析

通过测试结果可得如下分析:

1、Nginx的每秒请求处理能力是10000+,满足需求标准;

2、随着并发数的增大,一次并发请求的响应时间相应增大,满足需求标准;

3、随着请求连接数的增加,相应的总体请求完成时间也增加,当请求连接数从50k增加至100k时,总体请求时间增加至2倍,具有一定的稳定性和速度性,满足需求标准;

4、当请求连接数和并发数依次递增时,出现偶尔的请求失败数,全部请求成功率大于99.99%,满足需求标准;

5、单台服务器支持3000并发正常,满足需求标准。

原文地址:https://www.cnblogs.com/kazihuo/p/7986681.html