P.S> чтобы скрипты эффективно работали на php-fastcgi или fpm надо их писать с этим учётом. Но этого никто не делает. Ещё есть вопрос, что тестировать. Например, насколько мне известно, тот же кипэлайв появился в nginx недавно. так же используется gzip-сжатие или нет, и т.д. и т.п. На самом деле, если уж сравнивать - то не банально поставить две виртуалки, а вполне очень плотненько поработать и посидеть над конфигами.
Raistlin добавил 12.10.2011 в 00:23
Boris A Dolgov: apache+mod_perl почти не будет иметь накладных расходов на обмен данными между perl и вебсервером
зато в тредовой модели мы получаем ту же проблему что и с пыхом. Зверь работает один. А чтобы каждый зверёк работал от своего uid.... поэтому я не использую mod_perl.
iopiop, не ошибаетесь. Я то говорю об условиях реального хостинга. Т.е. php-fpm оно, конечно, круто, но php фактически не ускоряется при использовании fastcgi или fpm (точнее, очень не значительно). fastcgi используют в основном для того, чтобы заработали такие вещи как eAccelerator. С php-cgi использование акселеряторов вообще, мягко говоря, мало реально. С mod_php стабильно получается работать только у php-apc. т.е. у апача в режиме воркера есть одна проблемка: PHP можно акселерировать только на fastcgi.
Вот если сравнивать Perl-FastCGI vs Nginx + Apache vs пёрл в любом проявлении - тогда апач нервно курит в сторонке. А применительно к раздаче статики (которая в общем-то раздаётся очень эффективно и апачем) - здесь шансы почти уравниваются. Добавляем php - вуаля. Мы в равных условиях.
iopiop: пожалуйста - MaxClients равно максимальному количеству ниток для всех процессов апача.
Максимальному количеству потоков оно никогда равно небыло. Я не знаю, что такое нитка в данном контексте. Нитками я шью. Так вот два процесса апача могут обслуживать к примеру, 40 потоков данных.
Nginx работает подобным образом. Если быть точным, то вот так:
Архитектурно Nginx — это асинхронный сервер, который использует один главный процесс для приема соединений и несколько рабочих процессов для их обработки.
Теперь апач...
A single control process (the parent) is responsible for launching child processes. Each child process creates a fixed number of server threads as specified in the ThreadsPerChild directive, as well as a listener thread which listens for connections and passes them to a server thread for processing when they arrive.
Перевод:
Один контролирующий процесс (родитель) запускает дочерние процессы. Каждый дочерний процесс создаёт внутри себя фиксированное число потоков как указано в соответствующей директиве так же, как и слушающий поток, который слушает подулючения и передаёт их в поток для ообработки, когда они поступают.
жить с родителями == хостинг на своём компе
общага == обычный хостинг
жить в подвале == бесплатный хостинг
съемная комната == VPS
съемная квартира == VDS
собственная квартира == выделенный сервер
собственный дом == дата-центр
nanocat> как можно узнать из баш скрипта IP адрес?
bender> echo $(( $RANDOM % 255 )).$(( $RANDOM % 255 )).$(( $RANDOM % 255 )).$(( $RANDOM % 255 ))
nanocat> bender, да, спасибо, работает!
2
MinSpareThreads 25
3
MaxSpareThreads 75
4
ThreadLimit 64
5
ThreadsPerChild 25
6
MaxClients 150
7
MaxRequestsPerChild 0
Угу. Я бы удивился, если бы он не начал тупить.
Raistlin добавил 13.10.2011 в 05:43
P.S. конфиг писать НАДО. Подо всё. А не тупо пользоваться дефолтом.
Raistlin добавил 13.10.2011 в 05:47
http://www.pentarh.com/wp/2008/07/11/test-results-apache-vs-php-fcgi/
Староват, тестируется не то, но общее представление даст.
А размер базы не вырос?
но вам доказали, что для отдачи статики (и работы с медленными клиентами) nginx эффективнее апача.
Да? А я говорю, что разницы фактически не заметно. Нет такого. Впринципе, нет. Если это есть 0.3-1% выигрыша - извините, смешной показатель.
keepalive между клиентами и nginx есть давно.
Да, я про nginx и бэкенд. Т.е. тут вопрос вообще скользкий. Конфигураций чертова уйма.
P.S> чтобы скрипты эффективно работали на php-fastcgi или fpm надо их писать с этим учётом. Но этого никто не делает. Ещё есть вопрос, что тестировать. Например, насколько мне известно, тот же кипэлайв появился в nginx недавно. так же используется gzip-сжатие или нет, и т.д. и т.п. На самом деле, если уж сравнивать - то не банально поставить две виртуалки, а вполне очень плотненько поработать и посидеть над конфигами.
Raistlin добавил 12.10.2011 в 00:23
apache+mod_perl почти не будет иметь накладных расходов на обмен данными между perl и вебсервером
зато в тредовой модели мы получаем ту же проблему что и с пыхом. Зверь работает один. А чтобы каждый зверёк работал от своего uid.... поэтому я не использую mod_perl.
iopiop, не ошибаетесь. Я то говорю об условиях реального хостинга. Т.е. php-fpm оно, конечно, круто, но php фактически не ускоряется при использовании fastcgi или fpm (точнее, очень не значительно). fastcgi используют в основном для того, чтобы заработали такие вещи как eAccelerator. С php-cgi использование акселеряторов вообще, мягко говоря, мало реально. С mod_php стабильно получается работать только у php-apc. т.е. у апача в режиме воркера есть одна проблемка: PHP можно акселерировать только на fastcgi.
Вот если сравнивать Perl-FastCGI vs Nginx + Apache vs пёрл в любом проявлении - тогда апач нервно курит в сторонке. А применительно к раздаче статики (которая в общем-то раздаётся очень эффективно и апачем) - здесь шансы почти уравниваются. Добавляем php - вуаля. Мы в равных условиях.
Boris A Dolgov, Ну чтож. Давайте на выходных займёмся.
Raistlin добавил 11.10.2011 в 23:42
что нить и процесс не так уж и отличаются
т.е. нить = поток? Угу. Мало отличаются только переключением контекста. На переключение контекста тратится много ресурсов? =).
пожалуйста - MaxClients равно максимальному количеству ниток для всех процессов апача.
Максимальному количеству потоков оно никогда равно небыло. Я не знаю, что такое нитка в данном контексте. Нитками я шью. Так вот два процесса апача могут обслуживать к примеру, 40 потоков данных.
Nginx работает подобным образом. Если быть точным, то вот так:
Теперь апач...
Перевод:
Один контролирующий процесс (родитель) запускает дочерние процессы. Каждый дочерний процесс создаёт внутри себя фиксированное число потоков как указано в соответствующей директиве так же, как и слушающий поток, который слушает подулючения и передаёт их в поток для ообработки, когда они поступают.
Ну и найдите 10 отличий...