Недавно я приобрел 6-ядерный сервер, на котором работает Ubuntu 10.04 и Apache. Как настроить apache для использования всех 6 ядер и что для этого лучше всего?
Возможно ли это, и если это возможно, имеет ли это какое-то отношение к приведенным ниже (это не мои настройки)?
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
ServerLimit 1500
MaxClients 1500
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Ура
Это моя текущая конфигурация
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# event MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Apache (и любое другое многопоточное приложение) по умолчанию будет использовать все доступные ядра. Пока у вас нет Apache, настроенного на использование меньшего количества серверов, чем у вас есть ядер, вам не нужно предпринимать никаких других действий.
По умолчанию со стандартными конфигурациями, доступными в большинстве упакованных версий Apache, вам не нужно ничего делать.
Как Apache работает в многоядерных системах и как вы его настраиваете, во многом зависит от того, какие MPM ты используешь. Один из наиболее распространенных MPM - это prefork.
Prefork в основном дает вам отдельный процесс для каждого запроса. Операционная система может легко распределить процессы для использования всех ядер.
Рабочий MPM фактически обеспечивает многопоточную работу, но он несовместим с некоторыми модулями Apache, которые не являются потокобезопасными (например, PHP).
См. Эту страницу Основные функции и модули с несколькими процессорами, а также перейдите по ссылкам и прочтите о различных доступных модулях.
Что работает в Apache? Часто ваш предел для потоковой передачи будет связан с непоточными модулями или кодом приложения.