background
開発

ApacheとnginxとLiteSpeedで性能測定してみた!②

2021/07/27公開
ApacheとnginxとLiteSpeedで性能測定してみた!

前回は8Kの画像ファイルに同時接続100人で10000リクエストを処理し、各種Webサーバソフトウェアの性能を測定しました。
今回は負荷条件を変更し、測定してみます。
どのような変化が起こったかご確認ください!

5倍の負荷(同時接続500人で50000リクエスト)をかけてみます。
まずはApacheです。

※ Apacheはデフォルトの設定では同時リクエストは256しか処理できないため、設定値 ServerLimit と MaxClient を1000に設定して実施しています。

      [root@ip-XXX-XXX-XXX-XXX html]# ab -n 50000 -c 500 http://localhost:8080/test.png
      This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
      Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
      Licensed to The Apache Software Foundation, http://www.apache.org/
      
      Benchmarking localhost (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:        Apache/2.4.41
      Server Hostname:        localhost
      Server Port:            8080
      
      Document Path:          /test.png
      Document Length:        8106 bytes
      
      Concurrency Level:      500
      Time taken for tests:   6.892 seconds
      Complete requests:      50000
      Failed requests:        0
      Total transferred:      418800000 bytes
      HTML transferred:       405300000 bytes
      Requests per second:    7254.33 [#/sec] (mean)
      Time per request:       68.924 [ms] (mean)
      Time per request:       0.138 [ms] (mean, across all concurrent requests)
      Transfer rate:          59338.14 [Kbytes/sec] received
      
      Connection Times (ms)
                  min  mean[+/-sd] median   max
      Connect:        0   25 130.9      8    1049
      Processing:     1   35  55.8     27    1343
      Waiting:        0   28  55.6     18    1343
      Total:          1   60 146.2     35    1517
      
      Percentage of the requests served within a certain time (ms)
            50%     35
            66%     40
            75%     43
            80%     45
            90%     51
            95%     73
            98%    461
            99%   1052
            100%   1517 (longest request)
      [root@ip-XXX-XXX-XXX-XXX html]# 

次にnginxです。

      [root@ip-XXX-XXX-XXX-XXX html]# ab -n 50000 -c 500 http://localhost:80/test.png
      This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
      Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
      Licensed to The Apache Software Foundation, http://www.apache.org/
      
      Benchmarking localhost (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:        nginx/1.18.0
      Server Hostname:        localhost
      Server Port:            80
      
      Document Path:          /test.png
      Document Length:        8106 bytes
      
      Concurrency Level:      500
      Time taken for tests:   2.666 seconds
      Complete requests:      50000
      Failed requests:        0
      Total transferred:      417050000 bytes
      HTML transferred:       405300000 bytes
      Requests per second:    18755.86 [#/sec] (mean)
      Time per request:       26.658 [ms] (mean)
      Time per request:       0.053 [ms] (mean, across all concurrent requests)
      Transfer rate:          152776.03 [Kbytes/sec] received
      
      Connection Times (ms)
                  min  mean[+/-sd] median   max
      Connect:        0   13  79.2      6    1035
      Processing:     4   13   4.0     12      40
      Waiting:        0    7   2.8      7      28
      Total:          9   26  79.3     19    1047
      
      Percentage of the requests served within a certain time (ms)
            50%     19
            66%     20
            75%     21
            80%     21
            90%     28
            95%     31
            98%     39
            99%     45
            100%   1047 (longest request)
      [root@ip-XXX-XXX-XXX-XXX html]# 
      

最後にLiteSpeedです。

      [root@ip-XXX-XXX-XXX-XXX html]# ab -n 50000 -c 500 http://localhost:8088/test.png
      This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
      Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
      Licensed to The Apache Software Foundation, http://www.apache.org/
      
      Benchmarking localhost (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:        LiteSpeed
      Server Hostname:        localhost
      Server Port:            8088
      
      Document Path:          /test.png
      Document Length:        8106 bytes
      
      Concurrency Level:      500
      Time taken for tests:   2.861 seconds
      Complete requests:      50000
      Failed requests:        0
      Total transferred:      421350000 bytes
      HTML transferred:       405300000 bytes
      Requests per second:    17477.17 [#/sec] (mean)
      Time per request:       28.609 [ms] (mean)
      Time per request:       0.057 [ms] (mean, across all concurrent requests)
      Transfer rate:          143828.24 [Kbytes/sec] received
      
      Connection Times (ms)
                  min  mean[+/-sd] median   max
      Connect:        0   10  48.1      8    1029
      Processing:     6   19  14.5     17     423
      Waiting:        0   11  14.6     10     418
      Total:         12   28  50.3     25    1052
      
      Percentage of the requests served within a certain time (ms)
            50%     25
            66%     27
            75%     28
            80%     29
            90%     30
            95%     31
            98%     36
            99%     73
            100%   1052 (longest request)
      [root@ip-XXX-XXX-XXX-XXX html]# 
      

今回はパーセンタイルに注目してみます。

パーセンタイル

Apache nginx LiteSpeed
50%     35 50%     19 50%     25
66%     40 66%     20 66%     27
75%     43 75%     21 75%     28
80%     45 80%     21 80%     29
90%     51 90%     28 90%     30
95%     73 95%     31 95%     31
98%    461 98%     39 98%     36
99%   1052 99%     45 99%     73
100%   1517 100%   1047 100%   1052

Apacheは95%くらいまでは比較的よい性能にみえていますが、98%以上で性能の劣化がみられてきています。 一方、nginx・LiteSpeedは安定した処理性能を発揮しているようにみえます。nginxとLiteSpeedではあまり差異はみられません。

次回は測定対象のファイルを「小さいサイズの画像(約8K)」から「一般的なWEBコンテンツサイズのHTML(約60K)」に変更してみます。
興味深い結果については次のコラムでご報告します!