Apache2 MPMの切替手順

MPMとはマルチプロセッシングモジュール(Multi-Processing Modules)の略です。

この仕組みは、複数台のブラウザからのアクセスに、直ぐに反応できるよう予めサーバ側でスレッドなりプロセスなりを待機させる仕組みで、prefork、worker、eventがあります。

この章では、MPMを切り替える方法を説明します。

MPMの確認

Raspberry Pi OSでApache2をインストールすると、preforkが既定インストールされます。

何がインストールされているかは、下記のコマンドで確認できます。

$ apachectl -V
Server version: Apache/2.4.57 (Debian)
Server built:   2023-04-13T03:26:51
Server's Module Magic Number: 20120211:127
Server loaded:  APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.42 2022-12-11
Compiled using: APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.42 2022-12-11
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_PROC_PTHREAD_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

上の赤字を見ると、preforkが実装されています。

MPMの切り替え

切換の手順は下記の通りです。

  1. 実装されているMPMの確認
    apachectl -V
  2. 実装されているMPMの非活性化
    a2dismod
  3. 切り替えたいMPMの活性化
    asenmod …
  4. Apache2のリスタート
    systemctl restart apache2

注意点は、MPMが非活性化されたままでは、Apache2は起動しないので、必ずprefork、worker、eventの何れかのMPMを活性化してから再起動してください。

活性および非活性化の手順は下記を参照ください。

preforkの活性化、非活性化

preforkの活性化(php8.2を活性化するとmpm_preforkも活性化されます。)

$ sudo a2enmod php8.2
Considering dependency mpm_prefork for php8.2:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Enabling module mpm_prefork.
Considering conflict php5 for php8.2:
Enabling module php8.2.
To activate the new configuration, you need to run:
  systemctl restart apache2
$ sudo systemctl restart apache2

preforkの非活性化

$  sudo a2dismod php8.2
Module php8.2 disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2
$  sudo a2dismod mpm_prefork
Module mpm_prefork disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2

workerの活性化、非活性化

workerの活性化

$ sudo a2enmod mpm_worker
Considering conflict mpm_event for mpm_worker:
Considering conflict mpm_prefork for mpm_worker:
Enabling module mpm_worker.
To activate the new configuration, you need to run:
  systemctl restart apache2
$ sudo systemctl restart apache2

workerの非活性化

$ sudo a2dismod mpm_worker
Module mpm_worker disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2

eventの活性化、非活性化

eventの活性化

$ sudo a2enmod mpm_event
Considering conflict mpm_worker for mpm_event:
Considering conflict mpm_prefork for mpm_event:
Enabling module mpm_event.
To activate the new configuration, you need to run:
  systemctl restart apache2
$ sudo systemctl restart apache2

eventの非活性化

$ sudo a2dismod mpm_event
Module mpm_event disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2
タイトルとURLをコピーしました