Блог Воли Стаса

Internet Information Services v5.0 против Apache v1.3

По специфике своей работы решил выяснить какой веб-сервер работает быстрее. Об отличиях написано много, мое лично мнение – с Апачем намного проще в запуске, настройке и мониторинге. Проверено личным опытом, в IIS очень намудрено с правами, хотя если приноровиться и к IIS можно привыкнуть.

Я бы дал веб-серверу Апач прозвище МДМ – Менее Десяти Минут, именно столько нужно чтобы его поставить с нуля, неспециально такой тест был проведен =)

Работа с базой данных

В качестве БД была использована MSSQL, на веб-сервере стоял MSSQL 2000 Client, MSSQL 2000 Server стоит на отдельномсервере. Скриптовый язык для проведения теста был выбран PHP, в IIS был прикручен как CGI, а в Apache как модуль. При вызове скрипта начинал работу цикл по выборке данных из таблицы, с иерархией запросов, что обеспечивало уникальность выводимых данных.

Всего около 3 тысяч запросов, каждый из которых выводил от 1 до 20 строк. Всего в таблице 3000 тысячи строк.

 

Тестирование проходило очень просто, в Mozilla FireFox открывались две вкладки в одной запускался скрипт под управлением IIS, в другой Apache, все итерации запускались с чередованием веб-серверов, одновременная работа веб-серверов была настроена на разных портах.

 

Запуск скрипта под управлением только одного веб-сервера, сек

Запуск совместно

Среднее

С начала IIS, затем Apache, сек

С начала Apache, затем IIS, сек

IIS v5.0

34,55

26,27

25,48

71,78

86,02

66,9

48,7

32,34

29,72

46,86

Apache v1.3

27,08

27,1

20,72

32,51

37,1

25,28

26,53

21,5

19,78

26,4

 

Тест направлен на анализ скорости связки веб-сервера и скриптового языка. Т.к. выполнение практически полностью зависело от MSSQL сервера, который был на другом сервере, загрузка процессора (Intel Pentium 2 ГГц, 512 ОЗУ) во время тестов не превышала 50%, при работающем WinAmp’e :-)

 

Результаты говорят сами за себя… Двойное превосходство Apache.

Объяснение может быть очень простым IIS не рассчитан на работу cgi-приложений и т.п., фактически же это означает, что если в качестве скриптового языка вы используете PHP, наиболее логично использовать Apache, желательно под *nix ;-)

 

Если кого-то заинтересовали возможности веб-сервисов, пишите в комменты, постараюсь ответить и провести дополнительные тесты.


Timon [06.12.2006 22:54:30] >> Не показательное сравнение. Основная нагрузка не на Апаче, и не на PHP, и даже не на их связке, а на базе. К тому же, если уж и сравнивать IIS и Apache 1.3, то несколько странно превосходство Apache над IIS. Вот в Apache 2 появился специальный MPM модуль для WinNT, за счет чего у него гораздо более высокая скорость работы в NT системах. Дальше, раз уж связывается PHP и IIS, то гораздо логичнее это сделать через ISAPI. Да, и я в корне не согласен прозвищем "МДМ", ибо есть у мя один кандидат, с нуля пытается связать Apache и PHP, и вот уже неделю как мучается :) и даже я, имея за плечами годами нажитый опыт, то и дело наступаю на всякие грабли при первоначальной установке :)

omen [06.12.2006 22:56:59] >> по поводу МДМ, руки конечно разные, но одни я научил по аське, за 9 минут 40 секунд, те же руки не могли справиться с установкой именно веб-приложения, хотя в целом были знакомы с IIS

Timon [06.12.2006 22:59:29] >> ну, с чутким руководителем то может и не сложно. но когда сталкиваешься с этим в первый раз... ох сколько танцев... :)

Дополнительно тестирование

Версия PHP 5.2

Всего строк в таблице: 3381

Запросов к базе: 2965

Тестирование: не отличается от предыдущего, кроме того что PHP в IIS сейчас работает как ISAPI-фильтр, в предыдущем тесте PHP работал как CGI-приложение.

 
Запуск скрипта под управлением только одного веб-сервера
Совместно
Среднее время
Сначала IIS
Сначала Apache
IIS v5.0
21,88
20,00
18,34
38,74
20,01
18,24
30,01
29,38
18,62
23,91
Apache v1.3
21,02
21,13
18,10
38,43
20,35
18,66
29,62
29,97
18,28
23,84

Мда.. признаться я немного огорчен, хотелось убедительной победы апач, но не получилось, придется проводить еще одно тестирование, с нагрузкой непосредственно на веб-сервер.

Тестирование непосредственно веб-сервера

Логика тестирования: в страницу через GET передавался параметр, скрипт выводил строки из базы (в среднем от 1 до 20), эта страница вызывалась при помощи модуля CURL, через вторую страницу в цикле. Т.О. Создавалась нагрузка как на сервер так и на взамодействие с БД, что по-моему мнению не маловажно, т.к. в настоящее время сложно найти значительный сайт без базы данных, 99% сайтов которые не использую БД, это малюсенькие приложения, которые выполняются доли секунд.

MSSQL: 162 запроса к базе

Apache IIS
36,61
37,41
36,94
35,64
35,83
35,50
35,68
36,56
34,92
34,73
35,54
35,57
Рестарт веб-серверов
35,04
35,53
35,39
35,11
34,92
34,88
Среднее время
35,65
35,66

ORACLE: 537 запроса к базе

Apache IIS
25,67
27,54
25,58
28,08
26,49
30,7
Рестарт веб-серверов
26,44
29,27
25,82
27,87
26,36
28,61
Среднее время
26,06
28,68
 
Итак, какие же выводы можно сделать? Вообще тестирование носило и носит сугубо прикладной характер, и некоторые обязательно захотят обвинить меня в том что я подтасовываю результаты и вывожу Апач с лучшей стороны, но тестирование я начал не просто так, а из-за того что невооруженным глазом были видны тормоза IIS, хотя первоначльно это объяснялось неоптимальной установкой PHP. Возможно есть смысл проделать те же самы тесты на мощном сервере, а не на моем маломощном селерончике с двумя гигагерцами и пятихаткой памяти, возможно тогда проявиться сила и можщь IIS, но Апач лучше...

P.S. для приверед: скрипт тестирования

Timon [17.12.2006 2:39:39] >> вообще, как-то сложно оценивать преимущества того или иного WEB-сервера по скорости работы PHP с базой данных.  Задача WEB-сервера просто принять и обработать HTTP запрос, на этом его функции и назначение заканчивается. Тут надо бы вывести немного другие характеристики. Например не общее время работы скрипта, а допустим время принятия HTTP запроса, время установления соединения, и другие параметры характерные чисто для WEB сервера. Совершенно другое дело если надо протестировать что быстрее работает, PHP в IIS, или PHP в Apache, на этот вопрос данный тест вполне отвечает, но есть всякие "но". Например не указано сколько времени занимает "чисто выборка данных из базы", или сколько времени занимает "чисто обработка данных средствами PHP". Еще один немаловажный момент. Не часто встретишь сайты, на которых скрипты выполняются по 30 секунд :), все таки время выполнения скриптов на большинстве сайтов не превышает секунды, и тогда основная нагрузка действительно ложится на WEB-сервер, а именно на установку и поддержание tcp соединения, и возможность обработки нескольких запросов одновременно.
Авторы и участники сей монографии: Timon, omen

Поиск по сайту:

Copyright © 2004-2024 by omen. Все права защищены. http://omen.perm.ru/