Назад | Перейти на главную страницу

Настройка Apache для использования нескольких ядер

Недавно я приобрел 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? Часто ваш предел для потоковой передачи будет связан с непоточными модулями или кодом приложения.