Apacheのタイムアウト(Timeout)を設定・確認する方法【2.4対応版】


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Apache, Linuxtips, Webサーバー管理, サーバー管理 > Apacheのタイムアウト(Timeout)を設定・確認する方法【2.4対応版】
「Apacheのタイムアウトエラーが出てしまう」
「Timeoutの秒数はどこで設定するの?」
「今の設定値を確認したい」
・・・Webサーバーの構築や障害対応の現場では、こうした確認が日常的に発生します。

この記事では、Apacheのタイムアウト(Timeout)設定を確認・変更する全手順を体系的に解説します。現代の主流であるApache 2.4系(RHEL 9 / AlmaLinux 9など)に完全対応した、今日から使える内容です。

そもそもApacheのTimeout(タイムアウト)とは

Apacheのタイムアウトとは、クライアント(ブラウザなど)とサーバー間でパケットの送受信が行われないまま、通信を強制的に切断するまでの待機時間(秒数)のことです。

リクエストのパケットが途絶え、指定した時間が過ぎるとコネクションが自動的に切断されます。これにより、応答のない無駄な接続がサーバーのリソースを圧迫するのを防いでいます。

Timeoutが適用される3つの場面

Apache 2.4の Timeout ディレクティブは、以下の3つの通信フェーズすべてに共通して適用されます。

接続(Connect):クライアントからの接続要求を待つ時間
受信(Receive):クライアントからリクエストデータが届くまでの待機時間
送信(Send):クライアントへレスポンスを送信できるまでの待機時間

「受信だけ延ばしたい」「送信だけ変えたい」という場合は、後述する ProxyTimeout や各モジュール固有のディレクティブとの使い分けが必要になります。

バージョンによるデフォルト値の大きな違い

ネット上の古い記事では「デフォルトは300秒」と書かれていることが多いですが、これはApache 2.2系までの古い仕様です。
現代のApache 2.4系以降では、デフォルト値が「60秒」に大幅に短縮されています。

・Apache 2.2 以前:デフォルト 300秒
・Apache 2.4 以降:デフォルト 60秒

動画のアップロードや重いデータベース処理を伴うWebシステムなど、処理に60秒以上かかる場合は、この値を明示的に変更する必要があります。

現在のTimeout設定値を確認する

設定を変更する前に、まず現在の設定値を確認しておくのが現場の基本です。

設定ファイルをgrepで確認する

# grep -i timeout /etc/httpd/conf/httpd.conf Timeout 60


インクルードされたサブ設定ファイルも含めて一括確認したい場合は、以下を実行します。

# grep -ri timeout /etc/httpd/


Apacheが実際に認識している設定値を確認する

設定ファイルに記述がない場合は、Apacheがデフォルト値を使用しています。実際にApacheが認識している値を確認するには以下のコマンドを使います。

# apachectl -t -D DUMP_RUN_CFG 2>&1 | grep -i timeout Timeout: 60

このコマンドはApacheを再起動せずに、現在の実行時設定を確認できるため、本番環境での確認に便利です。

Timeoutの秒数を設定・変更する手順

Red Hat系Linux(AlmaLinux、Rocky Linux、CentOSなど)で dnf(または yum)を使ってインストールした場合、メインの設定ファイルは /etc/httpd/conf/httpd.conf になります。

1. httpd.confファイルを編集する

設定ファイルを開き、Timeoutの値を設定します。

# vi /etc/httpd/conf/httpd.conf


ファイル内の末尾、またはグローバル設定のセクションに、以下のように Timeout ディレクティブを追記(または修正)します。ここでは例として120秒に設定します。

# # Timeout: The number of seconds before receives and sends time out. # Timeout 120

変更したら :wq で保存して終了します。

2. 設定の構文チェック(任意)

設定ファイルに文法ミスがないか、再起動前に確認しておくのが現場の鉄則です。

# apachectl configtest Syntax OK

Syntax OK と表示されれば問題ありません。

3. Apacheを再起動して設定を反映する

設定を反映させるには、Apacheを再起動します。本番環境では用途に応じて以下の2つを使い分けてください。

【開発・テスト環境】通常の再起動(既存接続をすべて切断)

# systemctl restart httpd


【本番環境推奨】グレースフルリスタート(既存接続を切らずに反映)

# systemctl reload httpd # または # apachectl graceful

graceful(グレースフル)は、現在処理中のリクエストを完了させてから設定を反映します。サービスを止めずに設定変更できるため、稼働中の本番サーバーではこちらを使うのが鉄則です。

バーチャルホスト単位でTimeoutを設定する

グローバル設定ではなく、特定のサイト(バーチャルホスト)だけタイムアウトを変えたい場面も現場では多くあります。その場合は <VirtualHost> ブロック内に記述します。

<VirtualHost *:443> ServerName upload.example.com DocumentRoot /var/www/upload # このバーチャルホストだけ300秒に延長する Timeout 300 # その他の設定... </VirtualHost>

バーチャルホスト内の設定はグローバル設定より優先されます。ファイルアップロード専用サイトなど、処理時間が長くなる用途に有効です。

設定時の注意点(極端に長い時間はNG)

「タイムアウトでエラーになるなら、余裕を持って1000秒にしておこう」といった極端に長い設定はセキュリティ面・パフォーマンス面で推奨されません。

パケットのやり取りができない(クライアント側がフリーズしているなどの)状態であっても、サーバーは指定された時間ずっとコネクションを維持して待ち続けます。悪意のある通信(スロー攻撃など)を受けた場合、あっという間にサーバーの同時接続数の上限に達し、Webサイトがダウンする原因になります。

Timeoutの値は、システム要件を満たす必要最小限の秒数にとどめましょう。

エラーログでタイムアウト発生を確認する

「本当にタイムアウトが原因でエラーが起きているのか確認したい」・・・そんなときはApacheのエラーログを確認します。

# tail -f /var/log/httpd/error_log

タイムアウトが発生している場合、以下のようなログが記録されています。

[Thu Jan 15 10:30:00.123456 2024] [reqtimeout:info] [pid 12345] AH01382: Request header read timeout [Thu Jan 15 10:30:05.123456 2024] [error] [pid 12345] [client 192.168.1.10:54321] AH00542: Request exceeded Timeout: /slow-script.php

Timeouttimeout のキーワードで絞り込むとすばやく確認できます。

# grep -i timeout /var/log/httpd/error_log


よくある質問・トラブルシューティング


Q. 設定を変えたのに反映されない

以下の順番で確認してください。

apachectl configtestSyntax OK が出ているか確認する
・設定を書いたファイルが正しく読み込まれているか確認する(grep -ri timeout /etc/httpd/
・Apacheを再起動(または graceful)しているか確認する
・バーチャルホストの設定がグローバル設定を上書きしていないか確認する

Q. ProxyTimeoutとTimeoutの違いは?

Timeout はApache自身がクライアントと直接通信する場合の待機時間です。
ProxyTimeout は、Apacheがリバースプロキシとしてバックエンドサーバー(PHPやTomcatなど)に接続する際の待機時間です。

PHPやPythonのアプリと連携している環境では、両方の設定が必要になる場合があります。

# クライアント$2194Apache間のタイムアウト Timeout 120 # Apache$2194バックエンド(PHP-FPMなど)間のタイムアウト ProxyTimeout 120


Q. mod_reqtimeoutとの関係は?

Apache 2.4では mod_reqtimeout モジュールが標準で有効になっており、リクエストヘッダー・ボディの読み取りタイムアウトを細かく制御できます。Timeout より優先して動作する場面があるため、ログに reqtimeout と表示されている場合は /etc/httpd/conf.d/reqtimeout.conf も確認してください。

本記事のまとめ

項目 内容
デフォルト値(Apache 2.4以降) 60秒
設定ファイル(RHEL系) /etc/httpd/conf/httpd.conf
設定ディレクティブ Timeout 120(例:120秒にする場合)
現在値の確認コマンド apachectl -t -D DUMP_RUN_CFG 2>&1 | grep -i timeout
構文チェック apachectl configtest
本番環境での反映 apachectl graceful(既存接続を切らずに反映)
エラーログの確認 grep -i timeout /var/log/httpd/error_log

Apacheの設定やエラー解決で、無駄な時間を過ごしていませんか?

「Timeoutのデフォルト値の違い」や「gracefulとrestartの使い分け」など、バージョンや環境による違いをネットの古い情報でツギハギしていると、思わぬトラブルを招きます。
バージョンに振り回されず、現場で通用するWebサーバー構築の"型"を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・tar.gz形式のファイルを解凍、展開するには

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る