Слон и кит: кто кого сборет?

May 20, 2011 18:10

Этот эксперимент был вызван к жизни постом http://ru-sysadmins.livejournal.com/1726092.html
В ходе обсуждения возник вопрос - кто ж быстрее отдает статику apache или nginx. Попробуем узнать ответ...


Условия опыта:

Платформа - RHEL 6 (2.6.32-71.el6.x86_64), под VMware Fusion 3.1.2 (1 CPU, 1024 RAM)

В синем углу ринга - apache httpd-2.2.15-5.el6.x86_64, установлен из дистрибутива RHEL6, все настройки взяты по умолчанию.
В красном углу ринга nginx-0.8.54-1.el6.x86_64, установлен из репозитория EPEL, все настройки оставлены по умолчанию, кроме выделеных жирным:

server {
listen 8080;
server_name _;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root /var/www/html;
index index.html index.htm;
}

error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}

В роли яблока раздора выступает файл с именем index.html, содержащий в себе великую мантру "Hello World!"

Больше в этом файле нет ничего.

Противники выходят на ринг, пожимают друг другу tcp-сокеты и начинается бой. В роли рефери выступает беспристрастный ab из апачевского пакета. Внимание, барабанная дробь:

[]# ab -n 10000 http://127.0.0.1:8080/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software: nginx/0.8.54
Server Hostname: 127.0.0.1
Server Port: 8080

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

Concurrency Level: 1
Time taken for tests: 2.186 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 2230000 bytes
HTML transferred: 130000 bytes
Requests per second: 4574.10 [#/sec] (mean)
Time per request: 0.219 [ms] (mean)
Time per request: 0.219 [ms] (mean, across all concurrent requests)
Transfer rate: 996.12 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 4
Processing: 0 0 0.1 0 4
Waiting: 0 0 0.1 0 4
Total: 0 0 0.1 0 4

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

[]# ab -n 10000 http://127.0.0.1:80/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software: Apache/2.2.15
Server Hostname: 127.0.0.1
Server Port: 80

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

Concurrency Level: 1
Time taken for tests: 2.963 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 2800000 bytes
HTML transferred: 130000 bytes
Requests per second: 3374.47 [#/sec] (mean)
Time per request: 0.296 [ms] (mean)
Time per request: 0.296 [ms] (mean, across all concurrent requests)
Transfer rate: 922.71 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 8
Processing: 0 0 0.3 0 10
Waiting: 0 0 0.2 0 10
Total: 0 0 0.3 0 10

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

Подведем итоги:
nginx - 4574.10 запросов в секунду
apache - 3374.47 запросов в секунду

Итого - почти в полтора раза.
За явным преимуществом побеждает nginx.
Previous post Next post
Up