[Welcome] [TitleIndex] [WordIndex

Quixote and Lighttpd

Lighttpd is a another Web Server with very promising features: Security, speed, compliance, and flexibility.

As of version 1.3.14 scgi is supported ;-).

Where to download and how to install?

Please refer to the Lighttpd web site: http://www.lighttpd.net/download/

Specific configuration modifications will be explained here after.

SCGI performance: Lighttpd vs Apache

Equipment

Benchmark

I will use the 2 following tests (with root user):

scripts used:

To be able to test socketfile, I'm using an updated version of scgi_server.py.

The script used can be downloaded: runscgi.py.

Because I will not specify any factory, this one will be used: quixote.demo.create_publisher

Results summary

I will run each commands 3x, and I will present the results of the third run.

Apache

Lighttpd

Lighttpd Socket File

Concurrency

5

50

5

%

50

%

5

%

50

%

Req. per sec

372.67

358.62

462.66

24.15 %

439.29

22.49 %

496.11

33.12 %

449.04

25.21 %

KB/sec

580.62

566.98

709.72

22.23 %

678.7

19.70 %

762.52

31.33 %

710.83

25.37 %

Time per Req (mean)

13.417

139.424

10.807

19.45 %

113.821

18.36 %

10.078

24.89 %

111.349

20.14 %

Conclusions

With a normal sockect connection, Lighttpd is +- 25% quicker than Apache.

With Unix Socket file, Lighttpd is +- 30% quicker than Apache (still with normal socket)

Outputs detail

Normal socket:

command:

gentoo # python runscgi.py --script-name=/scgi-test
factory:quixote.demo.create_publisher,host:localhost,port:3000,script-name:/scgi-test,max_childeren:5

Apache

nice -n 20 ab2 -n1000 -c5 http:/localhost/scgi-test/

Server Software:        Apache/2.0.54
Server Hostname:        localhost
Server Port:            80

Document Path:          /scgi-test/
Document Length:        1372 bytes

Concurrency Level:      5
Time taken for tests:   2.683324 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1595594 bytes
HTML transferred:       1373372 bytes
Requests per second:    372.67 [#/sec] (mean)
Time per request:       13.417 [ms] (mean)
Time per request:       2.683 [ms] (mean, across all concurrent requests)
Transfer rate:          580.62 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    4   3.6      4      22
Processing:     2    8  12.1      7     321
Waiting:        0    4  12.1      4     320
Total:          4   12  12.3     12     338

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     12
  75%     12
  80%     13
  90%     14
  95%     22
  98%     24
  99%     25
 100%    338 (longest request)

nice -n 20 ab2 -n1000 -c50 http:/localhost/scgi-test/

Server Software:        Apache/2.0.54
Server Hostname:        localhost
Server Port:            80

Document Path:          /scgi-test/
Document Length:        1372 bytes

Concurrency Level:      50
Time taken for tests:   2.788471 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1619504 bytes
HTML transferred:       1393952 bytes
Requests per second:    358.62 [#/sec] (mean)
Time per request:       139.424 [ms] (mean)
Time per request:       2.788 [ms] (mean, across all concurrent requests)
Transfer rate:          566.98 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   26  15.1     26      72
Processing:    39  105  19.7    106     254
Waiting:        0   84  22.6     89     246
Total:         56  131  13.1    132     255

Percentage of the requests served within a certain time (ms)
  50%    132
  66%    135
  75%    137
  80%    138
  90%    146
  95%    151
  98%    152
  99%    159
 100%    255 (longest request)

Lighttpd

nice -n 20 ab2 -n1000 -c5 http:/localhost/scgi-test/

Server Software:        lighttpd/1.3.15
Server Hostname:        localhost
Server Port:            80

Document Path:          /scgi-test/
Document Length:        1372 bytes

Concurrency Level:      5
Time taken for tests:   2.161415 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1571136 bytes
HTML transferred:       1374744 bytes
Requests per second:    462.66 [#/sec] (mean)
Time per request:       10.807 [ms] (mean)
Time per request:       2.161 [ms] (mean, across all concurrent requests)
Transfer rate:          709.72 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3   3.2      3      21
Processing:     2    6   5.9      6     158
Waiting:        0    3   5.9      3     157
Total:          2   10   5.6     10     164

Percentage of the requests served within a certain time (ms)
  50%     10
  66%     10
  75%     10
  80%     10
  90%     11
  95%     19
  98%     21
  99%     23
 100%    164 (longest request)

nice -n 20 ab2 -n1000 -c50 http:/localhost/scgi-test/

Server Software:        lighttpd/1.3.15
Server Hostname:        localhost
Server Port:            80

Document Path:          /scgi-test/
Document Length:        1372 bytes

Concurrency Level:      50
Time taken for tests:   2.276419 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1582112 bytes
HTML transferred:       1384348 bytes
Requests per second:    439.29 [#/sec] (mean)
Time per request:       113.821 [ms] (mean)
Time per request:       2.276 [ms] (mean, across all concurrent requests)
Transfer rate:          678.70 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   47  31.2     48     119
Processing:     6   57  32.6     58     315
Waiting:        0   52  33.7     53     313
Total:         80  105  21.3    101     401

Percentage of the requests served within a certain time (ms)
  50%    101
  66%    107
  75%    109
  80%    110
  90%    124
  95%    127
  98%    127
  99%    183
 100%    401 (longest request)

SocketFile

command:
gentoo # python runscgi.py --script-name=/scgi-test --socketfile=/tmp/scgi.socket
factory:quixote.demo.create_publisher,socketfile:/tmp/scgi.socket,script-name:/scgi-test,max_childeren:5

/!\ : becareful that the socket file created have read/write permission for your 2 processes's owner.

nice -n 20 ab2 -n1000 -c5 http:/localhost/scgi-test/

Server Software:        lighttpd/1.3.15
Server Hostname:        localhost
Server Port:            80

Document Path:          /scgi-test/
Document Length:        1372 bytes

Concurrency Level:      5
Time taken for tests:   2.15672 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1574272 bytes
HTML transferred:       1377488 bytes
Requests per second:    496.11 [#/sec] (mean)
Time per request:       10.078 [ms] (mean)
Time per request:       2.016 [ms] (mean, across all concurrent requests)
Transfer rate:          762.52 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3   2.9      3      21
Processing:     1    6  18.5      5     482
Waiting:        0    3  18.6      3     481
Total:          3    9  18.4      9     482

Percentage of the requests served within a certain time (ms)
  50%      9
  66%      9
  75%      9
  80%      9
  90%     10
  95%     11
  98%     21
  99%     24
 100%    482 (longest request)

nice -n 20 ab2 -n1000 -c50 http:/localhost/scgi-test/

Server Software:        lighttpd/1.3.15
Server Hostname:        localhost
Server Port:            80

Document Path:          /scgi-test/
Document Length:        1372 bytes

Concurrency Level:      50
Time taken for tests:   2.226973 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1621312 bytes
HTML transferred:       1418648 bytes
Requests per second:    449.04 [#/sec] (mean)
Time per request:       111.349 [ms] (mean)
Time per request:       2.227 [ms] (mean, across all concurrent requests)
Transfer rate:          710.83 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   45  31.0     47     111
Processing:     4   61  32.9     60     169
Waiting:        0   56  33.9     56     168
Total:         50  107  21.5    106     256

Percentage of the requests served within a certain time (ms)
  50%    106
  66%    112
  75%    114
  80%    114
  90%    118
  95%    157
  98%    175
  99%    176
 100%    256 (longest request)

You can contact me at: vincent_delft (at) yahoo.com.


CategoryScgi


2010-09-22 22:14