質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

3回答

35176閲覧

Apacheの「MaxClients」ディレクティブは何を意味してるんですか?

xipx_osx

総合スコア13

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

1グッド

1クリップ

投稿2016/07/04 08:51

「MaxClients」は「同時接続数」だとよく言われますが、何の「接続数」なのかイマイチ分からないです。

・TCPのコネクションの同時接続数ですか?
・クライアント(ブラウザ)の同時接続数ですか?
・HTTPリクエストの同時接続数ですか?

Apacheの公式ドキュメントによると

The MaxClients directive sets the limit on the number of simultaneous requests that will be served.

http://httpd.apache.org/docs/2.0/mod/mpm_common.html#maxclients

「simultaneous requests」との記載がありますので「HTTPリクエスト数」だと思うのですが、調べてみたら、クライアント(ブラウザ)数と主張する方もいるみたいで、混乱してきました… 「Clients」が入っているから、確かにブラウザ(1セッション)と取れなくもないですね。

一体この「MaxClients」は何を指しているのでしょうか…?

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

「リクエストに応答するために作成される 子プロセスの最大個数」です。

スレッドを用いるサーバではクライアントに対応できるスレッドの最大個数、スレッドを用いないサーバではクライアントに対応できる子プロセスの最大個数になります。

1つの子プロセスは1つのリクエストに応答するために働きますから、サーバーは最大(Max)MaxClients個のクライアント(Client)からのリクエストに応答するために働くことが出来るという事になります。

リクエストへの応答が終わった後、それに使われたコネクションが解除されるまでには、ある程度の時間がかかります。
また、リクエストのためのコネクションは、サーバ側で待ち列(キュー)に保持されたりします(キューにある間はコネクションはあっても、応答するための子プロセスに割り当てられていない状態になります)。
そのため、コネクションの総数がMaxClientsを超える場合があります。逆に言うとMaxClientsはコネクションの総数の上限ではないという事です。

公式ドキュメントの"requests that will be served"を、応答するための子プロセスが用意されている(だからserveされる)リクエスト、と理解すれば判りやすいと思います。

投稿2016/07/04 09:30

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xipx_osx

2016/07/04 09:53

ご回答ありがとうございます! 確認ですが、 ここでいう「クライアント」とはブラウザ(セッション・ユーザ)単位ではなく、 1クライアント=1HTTPリクエストという理解で大丈夫でしょうか? また、「コネクション数」とは「TCPコネクション数」のことでしょうか?
guest

0

ベストアンサー

TCPのコネクションの同時接続数です。
実際には、coco_bauerさんの回答のように多少違いは出ます。

・クライアント(ブラウザ)の同時接続数ですか?

1ブラウザが同時に複数個のTCPセッションを張ったりしますので、ブラウザ数はそれよりも少ないです。
1ブラウザから同時に2つとか4つとか6つとか、それくらいです。

・HTTPリクエストの同時接続数ですか?

1つのTCPセッションでは同時に複数のHTTPリクエストを送ることは無いので(HTTPパイプラインという仕様はあるが)、これはTCPセッション数と同じです。
HTTP/2.0だと、1のTCPセッションで同時に複数のHTTPリクエストを送ることが出来るので違ってきます。

投稿2016/07/04 13:04

otn

総合スコア84529

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xipx_osx

2016/07/04 13:32

なるほど! 再確認ですが、つまり、Chromeの場合、1ホストにつき最大で6TCPソケットしか作れないので、仮に同時接続ユーザが100だとしたら、MaxClientsの値は100*6=600 が最適だということでしょうか?
otn

2016/07/04 13:44

そういうことですね。
kurosawa

2016/07/04 15:01

こちらのやり取り勉強になりました。ありがとうございます!
guest

0

以下のページわかりやすかったです。
http://www.unix-power.net/linux/apache_tuning.html

TCPコネクションが開放されるまでの同時接続数とあるので、httpリクエストを受けとって、データ転送が終わりFINパケットを送出、TCPコネクションが切断されるまでを1セッションとする!と考えるとわかりやすいのではないでしょうか。

投稿2016/07/04 09:39

over

総合スコア4309

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xipx_osx

2016/07/04 13:42

これは分かりやすいです!参考になります!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問