Kinerja seperti apa yang dapat saya harapkan dari menggunakan Raspberry Pi sebagai server web?

39

Adakah yang melakukan beberapa pembandingan server web pada Raspi mereka? Saya belum memiliki Raspi, tetapi saya berencana menggunakannya sebagai server web dan saya tertarik melihat statistik untuk:

  • Jumlah permintaan per detik
  • Waktu respons latensi antar permintaan
  • Throughput (yaitu byte per detik)

Jika ini berbeda untuk berbagai perangkat lunak server web dan kombinasi OS saya juga akan tertarik untuk melihat perbandingan.

AntonChanning
sumber
4
Bisakah pemungutan suara ditutup tolong jelaskan mengapa? Ini adalah pertanyaan objektif dengan jawaban terukur objektif.
AntonChanning
1
Saya tidak bisa menjawab secara otoritatif, tapi saya rasa server web tercepat secara umum akan menjadi yang tercepat di RPi. Preferensi saya, Nginx.
Alex Chamberlain
@AlexChamberlain Terima kasih, berguna untuk diketahui, tetapi saya masih tertarik melihat jenis kinerja yang dapat saya peroleh dari perangkat sehingga saya tidak berencana menggunakannya untuk proyek di luar kemampuannya ...
AntonChanning

Jawaban:

28

Saya berharap, seperti kata Alex, tolok ukur akan menunjukkan bahwa server web Linux tercepat masih akan menjadi yang tercepat, terlepas dari arsitekturnya.

Jika ada yang ingin menjalankan benchmark maka tutorial berikut ini bermanfaat bagi saya:

Cara melakukan tolok ukur pada server web


Melayani Halaman Statis

Saya telah menguji RPi menggunakan Apache yang menyajikan halaman statis sederhana:

<h1>It works!</h1>

Sebagai grup kontrol saya menggunakan server web utama saya yang memberikan spesifikasi berikut;

Intel(R) Xeon(R) CPU           X3323  @ 2.50GHz
384MB RAM

Hasilnya adalah sebagai berikut:

Kontrol

ab -n 1000 -c 5 http://www.ivings.org.uk/~james/index.html

Server Software:        Apache/2.2.14
Server Hostname:        www.ivings.org.uk
Server Port:            80

Document Path:          /~james/index.html
Document Length:        19 bytes

Concurrency Level:      5
Time taken for tests:   17.767 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      294000 bytes
HTML transferred:       19000 bytes
Requests per second:    56.29 [#/sec] (mean)
Time per request:       88.833 [ms] (mean)
Time per request:       17.767 [ms] (mean, across all concurrent requests)
Transfer rate:          16.16 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       42   44   0.8     44      50
Processing:    44   45   0.9     45      59
Waiting:       44   45   0.9     45      59
Total:         86   89   1.3     88     108

Percentage of the requests served within a certain time (ms)
  50%     88
  66%     89
  75%     89
  80%     89
  90%     90
  95%     91
  98%     91
  99%     94
 100%    108 (longest request)

Raspberry Pi

ab -n 1000 -c 5 http://86.137.189.68/index.html

Server Software:        Apache/2.2.22
Server Hostname:        86.137.189.68
Server Port:            80

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

Concurrency Level:      5
Time taken for tests:   23.186 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      304000 bytes
HTML transferred:       19000 bytes
Requests per second:    43.13 [#/sec] (mean)
Time per request:       115.930 [ms] (mean)
Time per request:       23.186 [ms] (mean, across all concurrent requests)
Transfer rate:          12.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       40   44   5.6     43     116
Processing:    49   71 156.1     57    2157
Waiting:       47   53   6.7     55     104
Total:         91  116 156.1     99    2198

Percentage of the requests served within a certain time (ms)
  50%     99
  66%    100
  75%    100
  80%    100
  90%    102
  95%    126
  98%    150
  99%    667
 100%   2198 (longest request)

Kesimpulan

Catatan: Ini paling baik diperlakukan sebagai perkiraan.

Hasil menunjukkan bahwa Raspberry Pi benar-benar melakukan pertimbangan dengan baik. Itu hanya sedikit kurang responsif dari server web utama saya.

Seharusnya tidak masalah menangani sejumlah besar permintaan.

Jivings
sumber
Mungkin memang begitu, tetapi kinerja seperti apa yang dapat dihasilkan tercepat? Saya pikir Anda berdua salah memahami apa yang saya coba tanyakan ...
AntonChanning
1
Saya akan melakukan beberapa tolok ukur pada apache dan kembali kepada Anda.
Jivings
Terima kasih. Saya minta maaf jika pertanyaan saya tidak jelas. Mungkin saya membuat air berlumpur meminta perbandingan, ketika benar-benar statistik untuk tumpukan LAMP standar adalah minat utama saya.
AntonChanning
1
"A" di LAMP adalah singkatan dari server HTTP Apache ...
Roger Dahl
1
@Jivings: Itu adalah komentar yang ditujukan untuk OP. Dalam komentar awal untuk posting Anda, ia menunjukkan bahwa ia tertarik untuk menemukan kinerja server http tercepat dan tampak tidak senang dengan tolok ukur berbasis Apache Anda. Kemudian dia secara implisit meminta benchmark Apache ("A" di LAMP).
Roger Dahl
5

Apache bukan pilihan terbaik saat menyajikan konten statis, nginx lebih cocok untuk itu. Saya melakukan benchmark menggunakan http://lekensteyn.nl/index.html sebagai dokumen uji. Ini adalah dokumen yang lebih besar daripada contoh Jiving karena 19 byte tidak realistis untuk halaman yang sebenarnya. Hasilnya cukup menakjubkan, RPi bahkan mengungguli laptop kerja saya (mungkin karena saya memiliki semua jenis switch debugging kernel diaktifkan).

Berikut adalah nginx 1.4.1 yang berjalan di Arch Linux (RPi,, access_log offethernet kabel):

$ ab -n 1000 -c 5 http://192.168.2.10/index.html

Server Software:        nginx/1.4.1
Server Hostname:        192.168.2.10
Server Port:            80

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

Concurrency Level:      5
Time taken for tests:   2.341 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2392000 bytes
HTML transferred:       2159000 bytes
Requests per second:    427.18 [#/sec] (mean)
Time per request:       11.705 [ms] (mean)
Time per request:       2.341 [ms] (mean, across all concurrent requests)
Transfer rate:          997.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.1      1       1
Processing:     4   11   1.0     11      20
Waiting:        3   11   1.0     10      19
Total:          4   12   1.0     12      21

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     12
  75%     12
  80%     12
  90%     12
  95%     12
  98%     17
  99%     18
 100%     21 (longest request)

Ini laptop saya ( access_log off, ethernet kabel):

Server Software:        nginx/1.4.1
Server Hostname:        192.168.2.12
Server Port:            80

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

Concurrency Level:      5
Time taken for tests:   2.593 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2392000 bytes
HTML transferred:       2159000 bytes
Requests per second:    385.62 [#/sec] (mean)
Time per request:       12.966 [ms] (mean)
Time per request:       2.593 [ms] (mean, across all concurrent requests)
Transfer rate:          900.79 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2    6   3.4      5      82
Processing:     3    7   5.6      6      86
Waiting:        3    7   5.5      5      82
Total:          6   13   6.8     12      94

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     13
  75%     14
  80%     15
  90%     17
  95%     19
  98%     24
  99%     34
 100%     94 (longest request)

Untuk kelengkapan, server jarak jauh saya. Lebih lambat dengan koneksi WAN yang kemungkinan menjadi bottleneck ( access_logtidak mati juga):

Server Software:        nginx/1.2.8
Server Hostname:        lekensteyn.nl
Server Port:            80

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

Concurrency Level:      5
Time taken for tests:   11.074 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2370000 bytes
HTML transferred:       2159000 bytes
Requests per second:    90.30 [#/sec] (mean)
Time per request:       55.371 [ms] (mean)
Time per request:       11.074 [ms] (mean, across all concurrent requests)
Transfer rate:          209.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       25   27   2.3     26      59
Processing:    28   29   2.3     28      59
Waiting:       26   27   2.4     27      59
Total:         53   55   3.8     55     102

Percentage of the requests served within a certain time (ms)
  50%     55
  66%     55
  75%     55
  80%     55
  90%     56
  95%     57
  98%     59
  99%     86
 100%    102 (longest request)

Dengan konkurensi yang lebih banyak dan jumlah permintaan yang lebih tinggi, jumlahnya harus lebih dapat diandalkan karena lebih banyak sampel dapat dimasukkan (ketika saya berlari abmelawan laptop saya dalam mode kabel / nirkabel, angkanya sangat berfluktuasi). Perhatikan bahwa saat menguji dengan log akses aktif, buffer sistem file itu menyebabkan penundaan penulisan yang tidak dapat diprediksi saat direktori log ada di kartu SD.

Lekensteyn
sumber