[Тест] mod_php vs FastCGI

Тема в разделе "Администрирование серверов", создана пользователем PHP_Master, 21 фев 2009.

Статус темы:
Закрыта.
Модераторы: mefish, stooper
  1. PHP_Master

    PHP_Master

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


    Цель - сравнение производительности различных связок 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 при вдвое меньшем потреблении памяти.
     
    General Fizz, r00t и AccessForbidden нравится это.
  2. despainer

    despainer

    Регистр.:
    15 фев 2008
    Сообщения:
    615
    Симпатии:
    168
    а можно узнать конфигурацию оборудования?
    Какая ос на сервере сколько памяти,какой процессор?
     
  3. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    нужно выставлять одинаковое кол-во процессов, там и там. и тогда сравнивать. т.к. что такое СТАНДАРТНЫЕ конфиги никто не знает - а как ты понимаешь они все решают.

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

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

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

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

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

    как всегда, тесты никакие - зато вывод уже можно делать) журналист из тебя бы вышел хороший

    Добавлено через 12 минут
    P.S.: да и еще настройки пыхи одинаковые? там размер кеша у байтккодкешеров и тд? сборки тоже одинаковые? версия и тд?
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    У кого времени дофига, может собирать всё с нуля и тюнить. Я поставил всё из коробки за исключением 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
     
  5. r00t

    r00t

    Регистр.:
    30 июл 2006
    Сообщения:
    192
    Симпатии:
    65
    - а на основании чего было принято решение обрабатывать все запросы одним процессом?
     
  6. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    MaxRequestsPerChild - это кол-во запросов после которого детка умрёт, а не все запросы в одном процессе.

    ЗЫ Вопрос не ко мне, а к человеку предложившему свой вариант конфига.
     
  7. hutasl

    hutasl Создатель

    Регистр.:
    24 апр 2008
    Сообщения:
    26
    Симпатии:
    4
    Не хватает еще сравнения с lighttpd - в последнее время его многие сильно любят.
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Может на досуге и устрою.
    Но смысла не вижу - все сервера не охватишь.
     
  9. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    а сколько на спавн фастцги чайлдов стоит? я так понимаю машинка на которой все тестируется очень слаба?

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

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

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

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

    P.S.: ты пыху перекомпилировал? патчи ставил для фастцги?
     
  10. AccessForbidden

    AccessForbidden

    Регистр.:
    5 янв 2009
    Сообщения:
    324
    Симпатии:
    57
    Ты не понимаешь что ли? Брались дефолтные конфиги, которые уделали твои. По мне обсуждать тут нечего.
    PHP_Masterу огромное спасибо. Давно хотелось на цифрах увидеть разницу. А не на "письках"
     
Статус темы:
Закрыта.