Apacheの同時接続クライアント数は
MaxClients(Apache 2.4以降は MaxRequestWorkers)で制御します。この記事では、Apacheの接続クライアント数の設定方法を解説します。使用しているMPM(Prefork/Worker)によって設定箇所が変わるため、確認方法も合わせて解説します。
【この記事でわかること】
・Apache 2.3以前は MaxClients、2.4以降は MaxRequestWorkers で設定する
・mpm_prefork_module と mpm_worker_module で設定箇所が異なる
・CentOS/RHEL環境ではデフォルトでPrefork MPMが使用される
・設定値が小さすぎると処理待ちが発生し、大きすぎるとメモリ不足になる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
MPMの確認方法
# 使用中のMPMを確認する # apachectl -V | grep MPM Server MPM: Prefork
Prefork MPMの設定(CentOS/RHELデフォルト)
1. httpd.confまたはhttpd-mpm.confを編集する
# vi /etc/httpd/conf/httpd.conf <IfModule mpm_prefork_module> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 # Apache 2.3以前 # MaxRequestWorkers 256 # Apache 2.4以降 MaxRequestsPerChild 4000 </IfModule>
Worker MPMの設定
# vi /etc/httpd/conf/httpd.conf <IfModule mpm_worker_module> StartServers 4 MaxClients 300 # Apache 2.3以前 # MaxRequestWorkers 300 # Apache 2.4以降 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
主な設定項目の説明
・MaxClients / MaxRequestWorkers:同時接続できるクライアント数の上限・StartServers:起動時に生成するサーバープロセス数
・MinSpareServers:待機プロセスの最小数(Preforkのみ)
・MaxSpareServers:待機プロセスの最大数(Preforkのみ)
・ServerLimit:MaxClientsの上限値。MaxClientsより大きい値を設定する場合は変更が必要
設定変更後の反映
# Apacheを再起動して設定を反映 # systemctl restart httpd
本記事のまとめ
| 設定項目 | 説明 |
|---|---|
MaxClients(2.3以前) |
同時接続クライアント数の上限 |
MaxRequestWorkers(2.4以降) |
同時接続クライアント数の上限(2.4で名称変更) |
ServerLimit |
MaxClientsの最大値(256以上にする場合に変更が必要) |
Apache 2.4 系の MPM 選択基準(Event / Worker / Prefork の使い分け)
Apache 2.4 ではmpm_event・mpm_worker・mpm_prefork の3つの MPM が選べます。2026年現在の現場標準はeventで、RHEL 9 / Rocky 9 / AlmaLinux 9 でもデフォルト event です。Prefork は PHP の mod_php を使う場合に限り選ぶケースが多くなっています。1. 現在の MPM 切替方法(RHEL系)
RHEL 9系では/etc/httpd/conf.modules.d/00-mpm.conf でロードする MPM を1つだけ有効にします。# /etc/httpd/conf.modules.d/00-mpm.conf を編集する # LoadModule mpm_prefork_module modules/mod_mpm_prefork.so LoadModule mpm_event_module modules/mod_mpm_event.so # LoadModule mpm_worker_module modules/mod_mpm_worker.so
2. MPM 別の特徴比較
| MPM | 並列モデル | 適性 | 同時接続上限の目安 |
|---|---|---|---|
prefork |
プロセス1つ=接続1つ | mod_php(PHP)・スレッド非対応モジュール | 256(メモリ次第) |
worker |
プロセス×スレッドの2段 | 静的ファイル中心の高同時接続 | 数千 |
event |
worker + Keep-Alive 専用スレッド | HTTP/2・REST API・Keep-Alive 多用 | 数千~1万超 |
PHP-FPM 経由で PHP を動かす構成では event/worker の方が圧倒的に効率的です。古い記事で「PHPは prefork 一択」と書かれているのは mod_php 時代の話で、現代では mod_php 自体が非推奨になっています。
MaxRequestWorkers の適切な値を実メモリから逆算する
MaxRequestWorkers(旧 MaxClients)の値は「とりあえず大きく」ではなく、サーバの実メモリから逆算するのが鉄則です。大きすぎると swap が発生し、結局スループットが落ちます。1. 1プロセスあたりの平均メモリを実測する
# httpd プロセス1個あたりの平均常駐メモリを算出する # ps -ylC httpd --sort:rss | awk '{print $8/1024 " MB"}' 85.4 MB 83.1 MB 81.2 MB ... # 平均値を出す # ps -ylC httpd --sort:rss | awk 'NR>1 {sum+=$8; n++} END {print sum/n/1024 " MB"}' 82.3 MB
MaxRequestWorkersは約 3072 / 80 ≒ 38 となります。安全に丸めて MaxRequestWorkers 32 や 40 が現実解です。2. 設定値の上限と ServerLimit の関係
MaxRequestWorkers の値を 256 超に設定する場合は、ServerLimit も同時に上げる必要があります。# 例: 同時512接続を許可する場合 <IfModule mpm_event_module> StartServers 4 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 32 ServerLimit 16 MaxRequestWorkers 512 MaxConnectionsPerChild 10000 </IfModule>
MaxRequestWorkers = ServerLimit × ThreadsPerChild の関係が成り立ちます。例だと 16 × 32 = 512。この計算が合わないと Apache 起動時に警告ログが出るので、必ず3つを揃えて変更してください。3. 設定後にチューニングを確認する
# Apache の現在の同時接続状況を確認する(mod_status 有効時) # curl -s http://localhost/server-status?auto | grep -E "BusyWorkers|IdleWorkers" BusyWorkers: 12 IdleWorkers: 308 # 接続数のリアルタイム監視(外部から) # ss -tn state established '( dport = :80 or sport = :80 )' | wc -l
server-status や ss で実際の接続数を観察し、BusyWorkersが頭打ちになっていないか確認してください。頭打ちなら MaxRequestWorkersを増やす余地があり、メモリ消費の方が先に限界を迎えるなら垂直スケール(メモリ追加)や水平スケール(複数サーバ + LB)を検討します。Apacheのチューニング設定を体系的に学びたい方へ
同時接続数の適切な設定はApacheの安定稼働に不可欠です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Apacheのカスタムログを設定する
- 前のページへ:Apacheのポート番号を変更する
- この記事の属するカテゴリ:Apache・Linuxtips・Webサーバー管理・サーバー管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます