Тесты Windows/Linux Apache/PHP

User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Тесты Windows/Linux Apache/PHP

Post by f_evgeny »

Под влиянием темы "Сервер для Привета", решил я потестировать софт, давно хотел сравнить производительность и надежность разных решений. Вот то, что успел сделать сегодня:

Server (Где установлен Веб-сервер)
HW: CPU: AMD K6-500 MHz, RAM 128M
SW: Linux Debian "Woody", Kernel 2.2.20


Client (Установлен тестовый клиент на Перле)
HW: CPU: Intel PII Celeron-400 RAM 256M
SW: Linux Debian "Woody", Kernel 2.6.4
Тестовый клиент написан на перле,
в цикле запрашивает случайным образом
выбранный документ. На сервере лежат
документы HTML и php, содержание
одинаковое, названия - разные.


Test Linux N1
Условия :
Linux Debian kernel 2.2.20
Apache 1.3.26
Запрос случайно выбранных статических html документов
apache (ws2) 5% - 7%
test (evgeny) 50%
Number of requests = 5000
Success = 4955
Failure = 45
Execution time = 67 seconds
Загрузка процессора на сервере:
system 7.5%
user 4%
apache 5% - 15%
Загрузка процессора на клиенте:
test 60%

Test Linux N2
Запрос случайно выбранных статических php документов
php подключено как модуль
Number of requests = 5000
Success = 4958
Failure = 42
Execution time = 80 seconds
Загрузка процессора на сервере:
system 7.5%
user 15%
apache 5% - 15%
Загрузка процессора на клиенте:
test (evgeny) 40%-50%

Test Linux N3
Запрос случайно выбранных статических php документов
php подключено как CGI
Number of requests = 5000
Success = 4945
Failure = 55
Execution time = 251 seconds
Загрузка процессора на сервере:
apache 2.5% - 10%
php 0.1% - 0.5%
system 25% - 30%
user 50%
Загрузка процессора на клиенте:
test 15%

Test Windows N1
Windows 2000 Professional
Apache 1.3.11
Запрос случайно выбранных статических html документов
Number of requests = 5000
Success = 4952
Failure = 48
Execution time = 317 seconds
Загрузка процессора на сервере:
apache 0% - 23%
Загрузка процессора на клиенте:
test 10% - 20%

Test Windows N2
Windows 2000 Professional
Apache 1.3.11
Запрос случайно выбранных статических php документов
php подключено как CGI

С этим тестом проблемы - после включения загрузка процессора
на сервере - 100%, после 20-ти итераций клиент останавливался.
Пришлось вводить задержку. С sleep(1) - односекундной задержкой
система заработала. Но в общем надо переделывать клиента,
чтобы убивал залипшие соединения, или что, там мешает.
До модуля на Виндовсе не добрался. Когда будет время,
продолжу.
Last edited by f_evgeny on 22 Apr 2004 08:32, edited 1 time in total.
Дальше, все будет только хуже. Оптимист.
Big Cheese
Уже с Приветом
Posts: 1211
Joined: 02 Jul 2000 09:01
Location: SFBA

Post by Big Cheese »

Single-user тесты на мой взгляд не очень подходят для оценки производительности. Также не указали параметры сети и объем "отдаваемых" сервером данных. Вполне возможно, что, например, сервер "укладывает" 10Мб сеть и мерять CPU особого смысла нет. Или из-за малого объема памяти disk I/O является основным bottleneck-ом.

Еще один момент - не знаю, насколько это справедливо для apache, но я неоднократно сталкивался с отвратным качеством Windows-версий продуктов, у которых основная платформа - Unix. То-ли архитектура систем настолько разная, то-ли разработчики плохо разбираются в Windows API...
vovap
Уже с Приветом
Posts: 12014
Joined: 05 Apr 2000 09:01
Location: Philadelphia, PA, USA

Post by vovap »

Да, памяти очень мало. Win 2000 нужно хоть вдвое больше.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Новая порция тестов, на другой платформе, к сожалению Линукс там установить не могу, так что сравниваются только разные версии конфигурации Windows:

Server (Где установлен Веб-сервер)
HW: CPU: 2xP3-733 MHz, RAM 256M
SW: Windows NT 4.0 Server, Apache 1.3.20 PHP 4.06

Client (Установлен тестовый клиент на Перле)
HW: CPU: Intel Pentium III (Coppermine) 731.217 MHz RAM 256M
SW: Linux Debian "Woody", Kernel 2.6.4

Сеть 100 Mbit

Test Windows N1
Windows NT 4.0 server
Apache 1.3.20
Запрос случайно выбранных статических html документов

Number of requests = 5000
Success = 4950
Failure = 50
Execution time = 29 seconds

Загрузка процессора на сервере:
apache 0% - 35%
Загрузка процессора на клиенте:
test 34% - 40%

Test Windows N2
Windows NT 4.0 server
Apache 1.3.20
Запрос случайно выбранных статических php документов
php подключено как CGI

Number of requests = 5000
Success = 4942
Failure = 58
Execution time = 290 seconds
Загрузка процессора на сервере:
apache 0% - 23%
CPU load 50-80% (Работают оба процессора)
Загрузка процессора на клиенте:
test 3% - 5%

Test Windows N3
Windows NT 4.0 server
Apache 1.3.20
Запрос случайно выбранных статических php документов
php подключено как модуль

Number of requests = 5000
Success = 4956
Failure = 44
Execution time = 40 seconds

Загрузка процессора на сервере:
apache 40%
CPU load 40-50% (Работают оба процессора)
Загрузка процессора на клиенте:
test 31%
Last edited by f_evgeny on 22 Apr 2004 08:30, edited 1 time in total.
Дальше, все будет только хуже. Оптимист.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Big Cheese wrote:Single-user тесты на мой взгляд не очень подходят для оценки производительности. Также не указали параметры сети и объем "отдаваемых" сервером данных. Вполне возможно, что, например, сервер "укладывает" 10Мб сеть и мерять CPU особого смысла нет. Или из-за малого объема памяти disk I/O является основным bottleneck-ом.

Еще один момент - не знаю, насколько это справедливо для apache, но я неоднократно сталкивался с отвратным качеством Windows-версий продуктов, у которых основная платформа - Unix. То-ли архитектура систем настолько разная, то-ли разработчики плохо разбираются в Windows API...

1. Документы небольшие, дисковой активности ни в одном из тестов не зафиксировано.
2. Сеть 10Mbit, трафик контролировался. Насыщения сети не было.
3. По архитектуре. Мое твердое мнение, основная разница threads vs fork. На юниксе в основном на серверах используются процессы и форки, на виндовсе - треды. Запуск процесса/приложения на Виндовсе - доргое удовольствие. Например из проведенных тестов видно, что отношение CGI/module равно:
Linux: 251s/80s=3.14
Windows: 290s/40s=7.25
Отношение отражает затраты на запуск приложения (CGI!).
Дальше, все будет только хуже. Оптимист.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Еще один тест: Apache 2.0.49

Server (Где установлен Веб-сервер)
HW: CPU: 2xP3-733 MHz, RAM 256M
SW: Windows NT 4.0 Server, Apache 2.0.49 PHP 4.3.6

Client (Установлен тестовый клиент на Перле)
HW: CPU: Intel Pentium III (Coppermine) 731.217 MHz RAM 256M
SW: Linux Debian "Woody", Kernel 2.6.4

Сеть 100 Mbit, Насыщения сети нет

Test Windows N1
Запрос случайно выбранных статических html документов
Number of requests = 5000
Success = 4952
Failure = 48
Execution time = 23 seconds

Test Windows N2
Запрос случайно выбранных статических php документов
php подключено как CGI
Number of requests = 5000
Success = 4957
Failure = 43
Execution time = 274 seconds

Test Windows N3
Запрос случайно выбранных статических php документов
php подключено как модуль
Number of requests = 5000
Success = 4948
Failure = 52
Execution time = 32 seconds
Загрузка процессора на сервере:
apache 25% - 33%
CPU load 33-41% (Работают оба процессора)
Загрузка процессора на клиенте:
test 20% - 40%

Главное отличие Apache 2 от Apache 1 - использует треды.
Дальше, все будет только хуже. Оптимист.
vovap
Уже с Приветом
Posts: 12014
Joined: 05 Apr 2000 09:01
Location: Philadelphia, PA, USA

Post by vovap »

Это все хорошо, но малозначимо для практики. Статические PHP - это Вы HTML переименовали? То есть Вы практически тестируете затраты на вызов PHP интерпретатора - который приходит, обнаруживает что делать нечего и уходит. В этом случае все расходы -на его вызов - етественно разница большая. А когда этот PHP скрипт много чего-то делает - затраты на вызов становятся небольшими сравнительно затратами выполнения скрипта.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

vovap wrote:Это все хорошо, но малозначимо для практики. Статические PHP - это Вы HTML переименовали? То есть Вы практически тестируете затраты на вызов PHP интерпретатора - который приходит, обнаруживает что делать нечего и уходит. В этом случае все расходы -на его вызов - етественно разница большая. А когда этот PHP скрипт много чего-то делает - затраты на вызов становятся небольшими сравнительно затратами выполнения скрипта.

- Шаг за шагом, уважаемый, шаг за шагом, иначе трудно получить полную картину, доберемся и до mySQL и до phpBB2. Анализ, как известно, это разложение на составляющие элементы.
- Статический php, это у меня просто, php, который генерит текст документа командой print. Без обращения куда-либо.
И кстати, может уже где-то было написано, но все-таки, каковы параметры загрузки сервера, т.е. количество запросов/сек и/или insert-ов в нормальной обстановке и во время пиковой нагрузки?
Дальше, все будет только хуже. Оптимист.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

vovap wrote: В этом случае все расходы -на его вызов - етественно разница большая. А когда этот PHP скрипт много чего-то делает - затраты на вызов становятся небольшими сравнительно затратами выполнения скрипта.

Ну, скажем так, пока идет наработка и отладка тестового комплекса. Отладив его, и зная известную частоту запросов, можно будет попробовать загружать части комплекса с реальной частотой и оценивать, какой вклад они вносят в общую нагрузку, т.е. прикинуть "узкое место", а также одновременно оценить возможные пути решения.
- Ы?
Дальше, все будет только хуже. Оптимист.
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

f_evgeny wrote:Ну, скажем так, пока идет наработка и отладка тестового комплекса.


Неблагодарное ето дело...
Лучше бы взяли готовый JMeter и сосредоточились на том как спланировать тест...
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Palych wrote:
f_evgeny wrote:Ну, скажем так, пока идет наработка и отладка тестового комплекса.


Неблагодарное ето дело...
Лучше бы взяли готовый JMeter и сосредоточились на том как спланировать тест...

Проблема не в тестере, а в установке и конфигурации тестируемого софта/harda.
А какие плюсы даст мне JMeter?
Дальше, все будет только хуже. Оптимист.
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

f_evgeny wrote:А какие плюсы даст мне JMeter?


1. Позволит тестировать нагрузку параллельно, с гибкой системой настроек;
2. Позволит управлять куками и сессиями. Иначе как Вы будете тестировать тот же Привет, посылая сообщения от конкретных пользователей?
3. Позволит "записать" реальные запросы посылаемые браусером, а затем использовать их в тестах;
4. Манипулровать параметрами форм и запросов - разобрать параметры формы, полученой в предыдущем запросе и заслать их в следующий запрос с возможными изменениями (кнопка "сабмит");
5 - 1024. И еще много-много чего...
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

Poluchaetsya chto vyzov PHP cherez CGI zanimaet v srednem 55ms.
V vide module - 6.4ms.
Raznica konechno bol'shaya, no sresnij zapros k privetu redko zanimaet men'she 1 sec....
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Palych wrote:Poluchaetsya chto vyzov PHP cherez CGI zanimaet v srednem 55ms.
V vide module - 6.4ms.
Raznica konechno bol'shaya, no sresnij zapros k privetu redko zanimaet men'she 1 sec....

Я думаю, считать надо немного по-другому, а именно - при нагрузке 1 запрос/с отъедается X% процессора.
А так все еще зависит от сети.
Дальше, все будет только хуже. Оптимист.
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

f_evgeny wrote:Я думаю, считать надо немного по-другому, а именно - при нагрузке 1 запрос/с отъедается X% процессора.
А так все еще зависит от сети.

Vopros - kak podschitat' X? :pain1:
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Palych wrote:
f_evgeny wrote:Я думаю, считать надо немного по-другому, а именно - при нагрузке 1 запрос/с отъедается X% процессора.
А так все еще зависит от сети.

Vopros - kak podschitat' X? :pain1:

Из тестов, наподобие моих, нагружаем один элемент до упора, и смотрим, сколько он ест процессора.
Дальше, все будет только хуже. Оптимист.
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

f_evgeny wrote:элемент до упора, и смотрим, сколько он ест процессора.

Ctho togda est' элемент?
I chto s etoj informaciej delat' dal'she?
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Palych wrote:
f_evgeny wrote:элемент до упора, и смотрим, сколько он ест процессора.

Ctho togda est' элемент?
I chto s etoj informaciej delat' dal'she?

Ну, например Веб сервер с PHP - один элемент, база данных другой. Отельно при том же самом к-ве запросов протестировать БД, Вебсервер и смотреть, что что и сколько кушает, и пытаться анализировать.
Дальше, все будет только хуже. Оптимист.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Вот, добавил памяти до 256M и вот, что получилось:
http://visaginas.is.lt/~evgeny/2/report.html
Дальше, все будет только хуже. Оптимист.
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

Интересно...
Выходит Апаче сам по себе притормаживает на Вин2К, но поскольку практически весь форум работает в ПХП, мы должны получить выигрыш от применения Апаче+ПХП модуле за с чет пулинга и одного процесса на всех...

Return to “Вопросы и новости IT”