Apacheのタイムアウト(Timeout)やリクエストの数を拡張・設定する方法

Apache-Timeout

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、Apacheのタイムアウト(Timeout)やリクエストの最大数を拡張・設定する方法について解説していきます。

今回の実装Sampleでは「httpd.conf」に設定をしていきます。

Apacheのタイムアウト(Timeout)やリクエストの数を拡張する

Apacheでは、データ送受信時の待ち時間 (Timeout)を秒単位で設定することができます。

また、1つのTCPコネクションを使用して複数のHTTPリクエストを処理するように設定することもできます。

上記のようなApacheのパフォーマンス・チューニングをすることで、処理が高速化することができるので、ぜひ導入してみましょう。

Sampleの設定値は、次のとおりです。

httpd.conf に以下を追加して、Apache再起動すれば反映されます。

それぞれの設定値に関しては、1つずつ解説します。

### TimeOut-Config ###
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

Timeout: データ送受信時の待ち時間を秒単位で設定する

Timeout では、データ送受信時の待ち時間を秒単位で設定します。

対象は、次のような処理のタイムアウト値で、デフォルト値は60秒です。

  1. クライアントからのHTTPリクエスト受信時のTCPパケット受信待機時間
  2. クライアントへのHTTPレスポンス送信時のTCPパケット送信(相手からACKを受信するまでの)待機時間
  3. モジュール(mod_xxx)の処理待機時間

KeepAlive: 複数のHTTPリクエストの接続・処理を有効または無効に設定する

KeepAlive では、1つのTCPコネクションを使用して複数のHTTPリクエストを処理することができます。

WordPressで作成するWebサイトなどでは、複数の画像ファイルやCSSファイルを同時に読み込みWebページを生成しています。

上記のようなHTTPリクエストの多いWebサーバーでは、KeepAlive を On にすることで Apache の性能が向上します。

MaxKeepAliveRequests: 1 回の接続 (TCP) で受付を許容するリクエストの最大数を指定する

MaxKeepAliveRequests では、KeepAlive ディレクティブが On の時、1 回の接続 (TCP) で受付を許容するリクエストの最大数を指定できます。

一度に処理できる最大リクエスト数を示すMaxKeepAliveRequestsは、100程度を指定しておけば不足することはありません。

KeepAliveTimeout: TCPコネクションを維持し続ける最長時間(秒)を指定する

KeepAliveTimeout では、TCPコネクションを維持し続ける最長時間(秒)を指定します。

この期間は、1つのTCPコネクションで複数のHTTP通信が行えます。

一般的には数秒程度を指定します。

サーバーがHTTPリクエスト受け付けると、KeepAliveTimeout の期間TCPコネクションが保持され続けます。

大きな値を指定すると、大量のクライアントから同時接続があった際にTCPコネクションが不足する恐れがあるので注意が必要です。

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

プログラミング学習・エンジニア転職関連の情報

自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)

『GEEK JOBキャンプ』スピード転職コース(無料)

【IT道場】入校時0円! 就職目的プログラミングスクール

エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】

『techgym』 (Python特化・無料)

Apache関連の書籍

参考・引用

  1. 性能対策設定 (TimeOut / KeepAlive)
  2. Centos7、Apache 2.4.6 でタイムアウトの秒数設定を変更

最近の投稿