Какую производительность можно ожидать от использования Raspberry Pi в качестве веб-сервера?

39

Кто-нибудь сделал какой-нибудь тест на веб-сервере для своего Raspi? У меня еще нет своего Raspi, но я планирую использовать его в качестве веб-сервера, и мне интересно посмотреть статистику по:

  • Количество запросов в секунду
  • Время отклика между запросами
  • Пропускная способность (т.е. байтов в секунду)

Если они различны для разных программ веб-сервера и комбинаций ОС, мне также было бы интересно посмотреть сравнение.

AntonChanning
источник
4
Можно ли закрыть голосование, пожалуйста, объясните, почему? Это объективный вопрос с объективным измеримым ответом.
AntonChanning
1
Я не могу ответить авторитетно, но я считаю, что самые быстрые веб-серверы вообще будут самыми быстрыми на RPi. Мои предпочтения, Nginx.
Алекс Чемберлен
@AlexChamberlain Спасибо, полезно знать, но мне все равно было бы интересно узнать, какую производительность я могу получить от устройства, поэтому я не планирую использовать его для проекта сверх его возможностей ...
AntonChanning

Ответы:

28

Я ожидаю, что, как говорит Алекс, тесты покажут, что самые быстрые веб-серверы Linux все равно будут самыми быстрыми, независимо от архитектуры.

Если кто-то хочет запустить тесты, мне пригодится следующий урок:

Как выполнить бенчмарки на веб-сервере


Обслуживание статических страниц

Я проверил RPi, используя Apache, обслуживающий простую статическую страницу:

<h1>It works!</h1>

В качестве контрольной группы я использовал свой основной веб-сервер, который содержит следующую спецификацию;

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

Результаты приведены ниже:

контроль

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)

Вывод

Примечание: это лучше всего рассматривать как оценку.

Результаты показывают, что Raspberry Pi на самом деле выступал чертовски хорошо, учитывая. Это было только немного менее отзывчивым, чем мой основной веб-сервер.

Это должно хорошо обрабатывать достаточно большое количество запросов.

Jivings
источник
Это может быть так, но какую производительность могут производить самые быстрые? Я думаю, вы оба неправильно поняли то, что я пытаюсь спросить ...
AntonChanning
1
Я выполню некоторые тесты Apache и вернусь к вам.
Jivings
Спасибо. Я прошу прощения, если мой вопрос не был ясен. Возможно, я замутил воду, попросив сравнить, когда на самом деле мой основной интерес представляла статистика для стандартного стека LAMP.
AntonChanning
1
«A» в LAMP обозначает HTTP-сервер Apache ...
Роджер Даль
1
@Jivings: Это был комментарий для ОП. В первом комментарии к вашему сообщению он указал, что заинтересован в поиске производительности самого быстрого http-сервера и, похоже, недоволен вашим тестом на основе Apache. Затем он неявно попросил эталонный тест Apache («А» в ЛАМПЕ).
Роджер Даль
5

Apache - не лучший выбор при обслуживании статического контента, для этого лучше подходит nginx. Я сделал тест, используя http://lekensteyn.nl/index.html в качестве тестового документа. Это более крупный документ, чем пример Jiving, поскольку 19 байт не являются реалистичными для реальной страницы. Результаты довольно впечатляющие, RPi даже превосходит мой рабочий ноутбук (возможно, потому что у меня включены все виды переключателей отладки ядра).

Вот nginx 1.4.1, работающий на Arch Linux (RPi access_log off, проводной Ethernet):

$ 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)

Это мой ноутбук ( access_log offпроводной Ethernet):

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)

Для полноты моего удаленного сервера. Это медленнее с WAN-соединением, являющимся вероятным узким местом (также access_logне выключено):

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)

При большем количестве одновременных запросов и большем количестве запросов числа должны быть более надежными, так как можно включать больше образцов (когда я работал abна своем ноутбуке в проводном / беспроводном режиме, его числа сильно колебались). Обратите внимание, что при тестировании с входом в систему эти буферы файловой системы вызывают непредсказуемые задержки записи, когда каталог журналов находится на SD-карте.

Lekensteyn
источник