teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

Add result of investigation

2021/04/10 01:08

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -19,8 +19,40 @@
19
19
 
20
20
  参考: [mods-enabled directory | Apache](https://geek-university.com/apache/mods-enabled-directory/)
21
21
 
22
+ (ただし、`mpm_prefork` を有効化しなくても、`mpm_event` が最初から有効化されているため、やはり `mpm_event.conf` の初期値 150 が適用されます)
23
+
22
24
  `mpm_prefork` モジュールが、なぜ `MaxRequestWorkers` を 150 としているのかの根拠は
23
25
  軽く調べただけではわかりませんでした
24
26
 
25
27
  Apache のコードの変更履歴を追っていけばわかるかもしれません (わからないかもしれません):
26
- [apache/httpd: Mirror of Apache HTTP Server. Issues: http://issues.apache.org](https://github.com/apache/httpd)
28
+ [apache/httpd: Mirror of Apache HTTP Server. Issues: http://issues.apache.org](https://github.com/apache/httpd)
29
+
30
+ ## MaxRequestWorkers が MPM 設定ファイルで 150 に設定されている経緯
31
+
32
+ `MaxRequestWorkers` の旧名である `MaxClient` は最初 (1999 年)から 150 として指定されていたようです:
33
+ [Apache 1.3.9 baseline for the Apache 2.0 repository. · apache/httpd@77c2776](https://github.com/apache/httpd/commit/77c277683225999b00853b02ebde3bc9cf7f7f6f)
34
+
35
+ その後、`MaxClient` の設定は MPM の設定ごとに分割され、値は 150 が引き継がれました:
36
+ [Merged the simple-conf branch changes r159781:160695 into the trunk. · apache/httpd@fa4e866](https://github.com/apache/httpd/commit/fa4e8666003806970b6ef033d8d867f7a1ec0d89)
37
+
38
+ 更に、次のタイミングで `MaxClients` が `MaxRequestWorkers` に更新されます:
39
+ [Rename MaxClients to MaxRequestWorkers which describes more accuratel… · apache/httpd@6d8de2f](https://github.com/apache/httpd/commit/6d8de2ff429c61103aeae1e7c486380627969f9d)
40
+
41
+ ちなみに、最新の Apache では「ドキュメントの初期値に合わせる」(?) ということで 250 に更新されているようです:
42
+ [Updated event mpm configuration to match the defaults in documentatio… · apache/httpd@28a9c0d](https://github.com/apache/httpd/commit/28a9c0d0ab659bf6334e56a9e2e4b70a0cca0778)
43
+
44
+ 一方、ドキュメントの方は、ドキュメントが分割されたタイミングで、
45
+ 「prefork MPMを使って 256 を超えるクライアントを構成するには、`ServerLimit` ディレクティブを使ってください。」
46
+ とだけ表記されていたところに次の初期値表記が追加されています:
47
+
48
+ ```xml
49
+ <default>>MaxClients
50
+ 8 (with threads) MaxClients 256</default>
51
+ ```
52
+
53
+ [Start converting the mpm documentation. · apache/httpd@5fe0caf](https://github.com/apache/httpd/commit/5fe0caf22ae8c6201cf06ff414b1bdd35d1af07e)
54
+
55
+ しかし、このタイミングでも `MaxClients` は初期値 150 です:
56
+ [httpd/httpd-std.conf at 5fe0caf22ae8c6201cf06ff414b1bdd35d1af07e · apache/httpd](https://github.com/apache/httpd/blob/5fe0caf22ae8c6201cf06ff414b1bdd35d1af07e/docs/conf/httpd-std.conf)
57
+
58
+ 注: 設定しなかった場合に本当に 256 になるのかまでは確認していません

2

Add expression

2021/04/10 01:08

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -1,4 +1,4 @@
1
- 公式ドキュメントの初期値は、`MaxRequestWorkers` 何も指定をしなかった場合の値となります
1
+ 公式ドキュメントの初期値は、`MaxRequestWorkers` 何も指定をしなかった場合の値となります
2
2
 
3
3
  なぜ `/etc/apache2/mods-enabled/` 配下に `mpm_prefork.conf` が存在し
4
4
  `MaxRequestWorkers` が指定されているのか、
@@ -14,6 +14,9 @@
14
14
  RUN a2dismod mpm_event && a2enmod mpm_prefork
15
15
  ```
16
16
 
17
+ モジュールを有効にすると、`/etc/apache2/mods-enabled/` 配下に
18
+ 有効にしたモジュールの設定ファイルが作成されます
19
+
17
20
  参考: [mods-enabled directory | Apache](https://geek-university.com/apache/mods-enabled-directory/)
18
21
 
19
22
  `mpm_prefork` モジュールが、なぜ `MaxRequestWorkers` を 150 としているのかの根拠は

1

Fix expression

2021/04/09 12:04

投稿

y_shinoda
y_shinoda

スコア3272

answer CHANGED
@@ -3,9 +3,9 @@
3
3
  なぜ `/etc/apache2/mods-enabled/` 配下に `mpm_prefork.conf` が存在し
4
4
  `MaxRequestWorkers` が指定されているのか、
5
5
  その理由は、php:7.4-apache の Dockerfile が
6
- `a2enmod` コマンドで `MPM` の設定 `prefork` 設定しているためです:
6
+ `a2enmod` コマンドで `mpm_prefork` モジュール有効にしているためです:
7
7
 
8
- php:7.4-apache のDockerfile では、次の箇所で `MPM` を prefork 設定しています:
8
+ php:7.4-apache のDockerfile では、次の箇所で `mpm_prefork` モジュール有効にしています:
9
9
 
10
10
  [php/Dockerfile at 64811791f0682262478d73514819908fcfe73d7f · docker-library/php](https://github.com/docker-library/php/blob/64811791f0682262478d73514819908fcfe73d7f/7.4/buster/apache/Dockerfile#L90)
11
11
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  参考: [mods-enabled directory | Apache](https://geek-university.com/apache/mods-enabled-directory/)
18
18
 
19
- `MPM` が `prefork` の場合、なぜ `MaxRequestWorkers` を 150 としているのかの根拠は
19
+ `mpm_prefork` モジュールが、なぜ `MaxRequestWorkers` を 150 としているのかの根拠は
20
20
  軽く調べただけではわかりませんでした
21
21
 
22
22
  Apache のコードの変更履歴を追っていけばわかるかもしれません (わからないかもしれません):