[Тест] mod_php vs FastCGI

Статус
В этой теме нельзя размещать новые ответы.

PHP_Master

Хранитель порядка
Регистрация
3 Фев 2008
Сообщения
2.639
Реакции
601
Убедительная просьба инфу не пиздить - мне не жалко, но она предварительная и не в том виде, чтоб её тиражировать.
Если найду её за пределами форума, то продолжения не будет или будет под таким хайдом, что многие не скоро его увидят.
Спасибо.


Цель - сравнение производительности различных связок web-сервер + PHP + кэш опкода.

Тест - беспрерывный запрос списка из 30 урлов в 50 потоков (читай более 50 одновременных посетителей) в течение 2-х минут. Все урлы реальной CMS c реальной информацией.

Недостаток (а может и преимущество) тестирования - загружается только конечный документ без сопутствующих файлов (графика, css, javascript). Грубо говоря, оценивается производительность не всей связки, а только производительность PHP в данной связке (поэтому некоторые результаты могут кому-то показаться неожиданными).

Все конфиги стандартные, ничего специально не тюнилось за исключением добавления в nginx правил для ЧПУ в последнем тесте и использования сокета вместо TCP/IP тамже.

Перед выполнением каждого теста все участвующие компоненты (за исключением mysql) перезапускались. Каждый тест запускался 3-и раза, лучший и худший результаты отбрасывались, средний шёл в зачёт.

-------------------------------------------------------------------------
Классика - Apache2 prefork (далее просто Apache) + mod_php (в виде dso)
обработано запросов 1291
ошибок 0
получено данных, байт 21 543 013
RAM 250Mb

Apache + mod_php + APC
обработано запросов 1666
ошибок 0
получено данных, байт 29 763 031
RAM 125Mb

Apache + mod_php + eAccelerator
обработано запросов 1669
ошибок 0
получено данных, байт 29 771 856
RAM 150Mb

Apache + mod_php + xCache
обработано запросов 1634
ошибок 0
получено данных, байт 29 078 054
RAM 150Mb
-------------------------------------------------------------------------

-------------------------------------------------------------------------
Nginx как прокси перед Apache
Nginx + Apache + mod_php
обработано запросов 1262
ошибок 0
получено данных, байт 20 859 516
RAM 300Mb

Nginx + Apache + mod_php + APC
обработано запросов 1649
ошибок 0
получено данных, байт 29 669 977
RAM 160Mb

Nginx + Apache + mod_php + eAccelerator
обработано запросов 1646
ошибок 0
получено данных, байт 29 615 520
RAM 160Mb

Nginx + Apache + mod_php + xCache
обработано запросов 1619
ошибок 0
получено данных, байт 29 098 403
RAM 160Mb
-------------------------------------------------------------------------

-------------------------------------------------------------------------
Nginx + FPM
обработано запросов 1384
ошибок 0
получено данных, байт 23 670 034
RAM 60Mb

Nginx + FPM + APC
обработано запросов 1859
ошибок 0
получено данных, байт 32 968 333
RAM 60Mb

Nginx + FPM + eAccelerator
обработано запросов 1879
ошибок 0
получено данных, байт 33 417 289
RAM 55Mb

Nginx + FPM + xCache
обработано запросов 1831
ошибок 0
получено данных, байт 32 409 829
RAM 55Mb
-------------------------------------------------------------------------

Тест "грязный" - запускался прямо на сервере, но картину оценить можно.
Если позволит время, на следующей неделе сделаю чистый тест.

Nginx + FPM + eAccelerator позволили обслужить на 200 коннектов больше чем хвалённый Apache + mod_php + eAccelerator при вдвое меньшем потреблении памяти.
 
а можно узнать конфигурацию оборудования?
Какая ос на сервере сколько памяти,какой процессор?
 
Все конфиги стандартные, ничего специально не тюнилось
нужно выставлять одинаковое кол-во процессов, там и там. и тогда сравнивать. т.к. что такое СТАНДАРТНЫЕ конфиги никто не знает - а как ты понимаешь они все решают.

причем СТАРТ серверс у апача ставить сразу на максимальное кол-во. чтобы они не создавались в самом начале - когда пойдут первые запросы а уже чтобы висели в памяти - как на твоем Фастцги)
StartServers 20
MinSpareServers 20
MaxSpareServers 20
MaxClients 1024
MaxRequestsPerChild 0
вот это счас 20 процессов будет у пыхи (Префорк!). в фастцги также выстави 20 чайлдов или воркеров, что у них там и тогда проверяй - будет уже ближе к правде.

Кипалив нужно всюду выключать и на нжинкс и на апаче.

сборки апача нжинкса и фастцги демона все "с завода"? или фастциги компилится на машине а остальное заводское (или он вобще не компилится)? у меня по тестами собранный самим нжинкс работает на 10% быстрее нежели чем с репразитория. поэтому этот тоже важно, результаты твоих тестов также колеблятся в районе 10-15% поэтому роль это играет. таже пыха? я так понимаю под ФАСТЦГИ она пересобиралась а под апачем нет?

ну и грузить только из ВНЕ и нормальным софтом. хотябы АПАЧ бенчем, если ниче другого нету. тут один урл тока все равно, зато будет время респонсев оно тоже важно.

и еще ЦМС ты уверен что не кешит резалты после первого запроса? те может там вырубить кеш принудительно. чтобы само оно ниче не кешило.

Nginx + FPM + eAccelerator позволили обслужить на 200 коннектов больше чем хвалённый Apache + mod_php + eAccelerator при вдвое меньшем потреблении памяти.
как всегда, тесты никакие - зато вывод уже можно делать) журналист из тебя бы вышел хороший

Добавлено через 12 минут
P.S.: да и еще настройки пыхи одинаковые? там размер кеша у байтккодкешеров и тд? сборки тоже одинаковые? версия и тд?
 
У кого времени дофига, может собирать всё с нуля и тюнить. Я поставил всё из коробки за исключением PHP, который собирался ручками (версия и конфиг одинаковые, из модулей только mysql) и кэшей. Настройки кэшей дефолтные (только в xcache установлен размер кэша в 30 метров, что соответствует дефолтному параметру APC, eAccelerator использует чуть больше).

и еще ЦМС ты уверен что не кешит резалты после первого запроса? те может там вырубить кеш принудительно. чтобы само оно ниче не кешило.
Кэшит или нет - никого это не интересует, важен результат который показывает тест. Или ты думаешь что кэш CMS зависит от сборки?

ну и грузить только из ВНЕ и нормальным софтом. хотябы АПАЧ бенчем, если ниче другого нету. тут один урл тока все равно, зато будет время респонсев оно тоже важно.
Тест из вне необходим только для получения чистых цифр, относительные результаты будут такими же. Этот тест проводился при одинаковых условиях и при отсутствии влияния на сервер извне. А мой софт нормальный, попродвинутее ab будет (время респонса собирает тоже).

как всегда, тесты никакие - зато вывод уже можно делать) журналист из тебя бы вышел хороший
Для тебя никакие, для меня что-то значат.
Вобщем, п**еть - не мешки носить :D Свои тесты сделай, потом и поговорим.


Если тема интересна, можете кидать конфиги сюда. На досуге потестирую.

Добавлено через 45 минут
Специльно для upandhigh
Было:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 150
MaxClients 150
MaxRequestsPerChild 10000
KeepAlive On

Сделал:
StartServers 20
MinSpareServers 20
MaxSpareServers 20
ServerLimit 1024
MaxClients 1024
MaxRequestsPerChild 0
KeepAlive off

Результат Apache+mod_php (лучшая из 3-х попыток:(
обработано запросов 1 260
ошибок 0
получено данных, байт 20 849 359
RAM 400Mb

Лучшая из 3-х попыток с таким конфигом оказалась хуже худшей при дефолтном конфиге :D
 
- а на основании чего было принято решение обрабатывать все запросы одним процессом?
 
- а на основании чего было принято решение обрабатывать все запросы одним процессом?
MaxRequestsPerChild - это кол-во запросов после которого детка умрёт, а не все запросы в одном процессе.

ЗЫ Вопрос не ко мне, а к человеку предложившему свой вариант конфига.
 
Не хватает еще сравнения с lighttpd - в последнее время его многие сильно любят.
 
Может на досуге и устрою.
Но смысла не вижу - все сервера не охватишь.
 
У кого времени дофига, может собирать всё с нуля и тюнить. Я поставил всё из коробки за исключением PHP, который собирался ручками (версия и конфиг одинаковые, из модулей только mysql) и кэшей. Настройки кэшей дефолтные (только в xcache установлен размер кэша в 30 метров, что соответствует дефолтному параметру APC, eAccelerator использует чуть больше).

Кэшит или нет - никого это не интересует, важен результат который показывает тест. Или ты думаешь что кэш CMS зависит от сборки?

Тест из вне необходим только для получения чистых цифр, относительные результаты будут такими же. Этот тест проводился при одинаковых условиях и при отсутствии влияния на сервер извне. А мой софт нормальный, попродвинутее ab будет (время респонса собирает тоже).

Для тебя никакие, для меня что-то значат.
Вобщем, п**еть - не мешки носить :D Свои тесты сделай, потом и поговорим.


Если тема интересна, можете кидать конфиги сюда. На досуге потестирую.

Добавлено через 45 минут
Специльно для upandhigh
Было:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 150
MaxClients 150
MaxRequestsPerChild 10000
KeepAlive On

Сделал:
StartServers 20
MinSpareServers 20
MaxSpareServers 20
ServerLimit 1024
MaxClients 1024
MaxRequestsPerChild 0
KeepAlive off

Результат Apache+mod_php (лучшая из 3-х попыток:(
обработано запросов 1 260
ошибок 0
получено данных, байт 20 849 359
RAM 400Mb

Лучшая из 3-х попыток с таким конфигом оказалась хуже худшей при дефолтном конфиге :D
а сколько на спавн фастцги чайлдов стоит? я так понимаю машинка на которой все тестируется очень слаба?

нужно выставлять одинаковое кол-во процессов на ФАСТЦГИ и на апаче, счас ты выставил 20 - до этого было 10, и работало значительнее быстрее - значит 20 твоя машина не тянет. глянь сколько чайлдов, на фастцги - и выстави столько же на апаче по принципу что я дал.

и у апача нужно многое отключать - теже логи, выгружать лишние модули. я уверен что если разница была в районе 10% то сделав все эти вещицы, он будет нехуже - просто лень самому заняться, тут опыт нужен именно в связке апач + нжинкс.

да и глянь резалты что ты давал до этого - там разинца в поглащении памяти была около 20% на сколько я помню. у тебя почти в два раза больше памяти связка с апаче кушает, т.е. тут чисто проблема в настройках. выложи настройки АПАЧА архивом - я повыключаю не нужное. и глянем.

мне думается что у ФАСТЦГИ меньше 10 процессов стоит - исходя из жираемой памяти, и скорости.

P.S.: ты пыху перекомпилировал? патчи ставил для фастцги?
 
Ты не понимаешь что ли? Брались дефолтные конфиги, которые уделали твои. По мне обсуждать тут нечего.
PHP_Masterу огромное спасибо. Давно хотелось на цифрах увидеть разницу. А не на "письках"
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху