0

我做了什么 :

  • 我使用了以下ab命令:

ab -n 1000 -c 100 http://192.168.101.143:8558/num?num=5

  • 在这里,我试图生成 1000 个 http 请求,100 个并发进程,端口是 8558,并且我想从我自己的 Web 服务器中生成 5 的阶乘。

  • 另一方面,我自己的 Web 服务器正在该 IP 地址端口:8558 处等待请求,当我们执行 ab 命令时,我自己的服务器接受请求并且处理过程给出的响应阶乘为 5,但每次 10-20 请求中的一些都失败原生Linux系统

  • 但是,当我在本机 Windows 系统上运行自己的服务器时,它会按时给出 1000 个正确响应和 100 个并发进程,而不会失败任何请求

问题:

  • 在 Windows 100 并发进程(线程)中工作正常,但在 Linux 中某些请求失败,为什么?
  • Linux 如何解决这个问题?
  • 是否有任何与套接字相关的问题

当服务器在 Windows 平台上时:

This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.101.143 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        
Server Hostname:        192.168.101.143
Server Port:            8558

Document Path:          /num?num=5
Document Length:        3 bytes

Concurrency Level:      100
Time taken for tests:   1.350 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      123000 bytes
HTML transferred:       3000 bytes
Requests per second:    652.93 [#/sec] (mean)
Time per request:       155.493 [ms] (mean)
Time per request:       1.550 [ms] (mean, across all concurrent requests)
Transfer rate:          75.20 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   1.6      1      12
Processing:     4   74 117.5     25    1803
Waiting:        2   56  74.4     16    1281
Total:          5   150 117.8     26    1810

Percentage of the requests served within a certain time (ms)
  50%     26
  66%     42
  75%     78
  80%     93
  90%    171
  95%    218
  98%    358
  99%    536
 100%   1810 (longest request)

服务器在 Linux 平台上运行时:

This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.101.143 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        
Server Hostname:        192.168.101.143
Server Port:            8558

Document Path:          /num?num=5
Document Length:        3 bytes

Concurrency Level:      100
Time taken for tests:   9.899 seconds
Complete requests:      1000
Failed requests:        13
   (Connect: 0, Receive: 0, Length: 13, Exceptions: 0)
Total transferred:      119802 bytes
HTML transferred:       2922 bytes
Requests per second:    102.91 [#/sec] (mean)
Time per request:       120.934 [ms] (mean)
Time per request:       1.299 [ms] (mean, across all concurrent requests)
Transfer rate:          50.19 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    4   3.0      3      21
Processing:     2  346 2206.7      7   18823
Waiting:        0   76 657.4      6    6371
Total:          3   90 2206.7     10   18827

Percentage of the requests served within a certain time (ms)
  50%     10
  66%     12
  75%     15
  80%     17
  90%     26
  95%     39
  98%   6341
  99%  18820
 100%  18827 (longest request)
4

1 回答 1

0
  • 在这种情况下,我使用的是 Virtual Linux,并且正在运行我的 Web 服务器。所以当我从另一个系统执行我的 ab 命令时。虚拟机中端口转发的一些问题(NAT,网桥,仅限主机)。所以,一些请求失败了。

  • 之后,当我尝试在主机 Linux 上运行我的 Web 服务器并在另一个系统中执行 ab 命令时,我在 100 个并发进程中得到了完美的输出。

  • 因此,据此,我得出结论,当您从 Virtual box 测试 Web 服务器时,我们需要查看硬件延迟和端口转发问题的这种类型的负载测试也存在,但在主机 Linux 系统中没有问题。

于 2016-04-20T05:28:34.100 回答