Тесты Windows/Linux Apache/PHP
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Тесты Windows/Linux Apache/PHP
Под влиянием темы "Сервер для Привета", решил я потестировать софт, давно хотел сравнить производительность и надежность разных решений. Вот то, что успел сделать сегодня:
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) - односекундной задержкой
система заработала. Но в общем надо переделывать клиента,
чтобы убивал залипшие соединения, или что, там мешает.
До модуля на Виндовсе не добрался. Когда будет время,
продолжу.
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.
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 1211
- Joined: 02 Jul 2000 09:01
- Location: SFBA
Single-user тесты на мой взгляд не очень подходят для оценки производительности. Также не указали параметры сети и объем "отдаваемых" сервером данных. Вполне возможно, что, например, сервер "укладывает" 10Мб сеть и мерять CPU особого смысла нет. Или из-за малого объема памяти disk I/O является основным bottleneck-ом.
Еще один момент - не знаю, насколько это справедливо для apache, но я неоднократно сталкивался с отвратным качеством Windows-версий продуктов, у которых основная платформа - Unix. То-ли архитектура систем настолько разная, то-ли разработчики плохо разбираются в Windows API...
Еще один момент - не знаю, насколько это справедливо для apache, но я неоднократно сталкивался с отвратным качеством Windows-версий продуктов, у которых основная платформа - Unix. То-ли архитектура систем настолько разная, то-ли разработчики плохо разбираются в Windows API...
-
- Уже с Приветом
- Posts: 12014
- Joined: 05 Apr 2000 09:01
- Location: Philadelphia, PA, USA
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Новая порция тестов, на другой платформе, к сожалению Линукс там установить не могу, так что сравниваются только разные версии конфигурации 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%
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.
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
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!).
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Еще один тест: 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 - использует треды.
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 - использует треды.
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 12014
- Joined: 05 Apr 2000 09:01
- Location: Philadelphia, PA, USA
Это все хорошо, но малозначимо для практики. Статические PHP - это Вы HTML переименовали? То есть Вы практически тестируете затраты на вызов PHP интерпретатора - который приходит, обнаруживает что делать нечего и уходит. В этом случае все расходы -на его вызов - етественно разница большая. А когда этот PHP скрипт много чего-то делает - затраты на вызов становятся небольшими сравнительно затратами выполнения скрипта.
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
vovap wrote:Это все хорошо, но малозначимо для практики. Статические PHP - это Вы HTML переименовали? То есть Вы практически тестируете затраты на вызов PHP интерпретатора - который приходит, обнаруживает что делать нечего и уходит. В этом случае все расходы -на его вызов - етественно разница большая. А когда этот PHP скрипт много чего-то делает - затраты на вызов становятся небольшими сравнительно затратами выполнения скрипта.
- Шаг за шагом, уважаемый, шаг за шагом, иначе трудно получить полную картину, доберемся и до mySQL и до phpBB2. Анализ, как известно, это разложение на составляющие элементы.
- Статический php, это у меня просто, php, который генерит текст документа командой print. Без обращения куда-либо.
И кстати, может уже где-то было написано, но все-таки, каковы параметры загрузки сервера, т.е. количество запросов/сек и/или insert-ов в нормальной обстановке и во время пиковой нагрузки?
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
vovap wrote: В этом случае все расходы -на его вызов - етественно разница большая. А когда этот PHP скрипт много чего-то делает - затраты на вызов становятся небольшими сравнительно затратами выполнения скрипта.
Ну, скажем так, пока идет наработка и отладка тестового комплекса. Отладив его, и зная известную частоту запросов, можно будет попробовать загружать части комплекса с реальной частотой и оценивать, какой вклад они вносят в общую нагрузку, т.е. прикинуть "узкое место", а также одновременно оценить возможные пути решения.
- Ы?
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Palych wrote:f_evgeny wrote:Ну, скажем так, пока идет наработка и отладка тестового комплекса.
Неблагодарное ето дело...
Лучше бы взяли готовый JMeter и сосредоточились на том как спланировать тест...
Проблема не в тестере, а в установке и конфигурации тестируемого софта/harda.
А какие плюсы даст мне JMeter?
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01
f_evgeny wrote:А какие плюсы даст мне JMeter?
1. Позволит тестировать нагрузку параллельно, с гибкой системой настроек;
2. Позволит управлять куками и сессиями. Иначе как Вы будете тестировать тот же Привет, посылая сообщения от конкретных пользователей?
3. Позволит "записать" реальные запросы посылаемые браусером, а затем использовать их в тестах;
4. Манипулровать параметрами форм и запросов - разобрать параметры формы, полученой в предыдущем запросе и заслать их в следующий запрос с возможными изменениями (кнопка "сабмит");
5 - 1024. И еще много-много чего...
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
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% процессора.
А так все еще зависит от сети.
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Palych wrote:f_evgeny wrote:Я думаю, считать надо немного по-другому, а именно - при нагрузке 1 запрос/с отъедается X% процессора.
А так все еще зависит от сети.
Vopros - kak podschitat' X?
Из тестов, наподобие моих, нагружаем один элемент до упора, и смотрим, сколько он ест процессора.
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Palych wrote:f_evgeny wrote:элемент до упора, и смотрим, сколько он ест процессора.
Ctho togda est' элемент?
I chto s etoj informaciej delat' dal'she?
Ну, например Веб сервер с PHP - один элемент, база данных другой. Отельно при том же самом к-ве запросов протестировать БД, Вебсервер и смотреть, что что и сколько кушает, и пытаться анализировать.
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
Вот, добавил памяти до 256M и вот, что получилось:
http://visaginas.is.lt/~evgeny/2/report.html
http://visaginas.is.lt/~evgeny/2/report.html
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 13683
- Joined: 16 Jan 2001 10:01