Prefork делает процесс для запроса. Можно выкрутить backlog, но тогда получим падение поизводительности
Хотите - киньте сюда свои настройки для апача - запущу с ними, сервер пока работает 🍾
Ок, только mysql на отдельном, чтоб не влиял на тесты
nginx перед apache мало что даст, ибо сама суть apache - делать отдельный процесс на каждый вызов и php-fpm - обрабатывать все вызовы статичными процессами в памяти.
Нагрузку и тормоза дают именно форки апача, если же туда поставить apache как worker, то тормозов будет значительно меньше, особенно если процессы worker сделать по числу камней ;)
Andreyka добавил 25.12.2009 в 08:45
Кстати, как на счет теста Битрикс - два апача, один в prefork mod_php, другой worker php-fpm?
Тест который ставит все точки над i
http://habrahabr.ru/blogs/linux/79225/
Оранжевое и синее - игнорируйте, смотрите в apps
whites, они никогда не использовали :D
С помощью карты, переменной и гугла
Для DLE подойдет это - /ru/forum/438004
Предоставьте север. Потестим. А то потом скажете что я на своем VDS результаты подкручивал :)
Прежде чем что-то писать, просьба читать документацию. В частности: http://httpd.apache.org/docs/2.0/mod/prefork.html
This Multi-Processing Module (MPM) implements a non-threaded, pre-forking web server that handles requests in a manner similar to Apache 1.3 A single control process is responsible for launching child processes which listen for connections and serve them when they arrive. Apache always tries to maintain several spare or idle server processes, which stand ready to serve incoming requests. In this way, clients do not need to wait for a new child processes to be forked before their requests can be served. The StartServers, MinSpareServers, MaxSpareServers, and MaxClients regulate how the parent process creates children to serve requests. In general, Apache is very self-regulating, so most sites do not need to adjust these directives from their default values. Sites which need to serve more than 256 simultaneous requests may need to increase MaxClients, while sites with limited memory may need to decrease MaxClients to keep the server from thrashing (swapping memory to disk and back). More information about tuning process creation is provided in the performance hints documentation.
А теперь немного информации о том как работает префорк для чайников и тех, кто не умеет читать документацию.
Апач открывает на каждый коннект по отдельному процессу + держит в запасе несколько процессов про запас, за что его и прозвали префорком. Максимальное число процессов задается через MaxClients. Соответственно 256 коннектов требуют 256 процессов. В перфорке ServerLimit должен быть таким же как и MaxClients, в воркере это например работает иначе.
Многие считают, что один процесс префорка может обработать много коннектов и за это отвечает опция MaxRequestsPerChild 🤣
На самом деле эта опция отвечает через сколько запросов процесс будет прибит. Это нужно если где-то течет память и процесс "разбухает.
А теперь считаем
1000 одновременных коннектов обработают 2 процесса php-fpm по 512 коннектов каждый. Они занимают 20mb. Плюс один воркер nginx который вообще весит пару копеек.
А теперь сравним с апачем - 1000x10mb - это ~ гиг. Ну а теперь сравним 20 метров и гиг. Разница значительна, не так ли🚬