Apache HTTP Serverインストール後のパフォーマンステスト手順【完全ガイド】

Apache HTTP Serverは、世界中で広く使用されているオープンソースのWebサーバーです。シンプルなインストール手順と高い拡張性を持つ一方で、適切なパフォーマンステストを行わなければ、アクセス増加時にサーバーが応答しなくなる可能性があります。特に、トラフィックが多いサイトでは、サーバーの負荷を事前にシミュレーションし、ボトルネックを特定することが重要です。

本記事では、Apache HTTP Serverインストール後に行うべきパフォーマンステストの具体的な手順を解説します。Apache Bench(ab)やSiegeといったツールを使った負荷テストの方法、設定ファイル(httpd.conf)の最適化、KeepAliveやgzip圧縮、キャッシュの設定方法について詳しく説明します。

この記事を通じて、Apacheのパフォーマンスを最大限に引き出し、安定したWebサービスを提供するための知識を習得しましょう。

目次
  1. Apacheの基本的な動作確認方法
    1. Apacheの起動とステータス確認
    2. 動作確認のためのテストアクセス
    3. ポートの確認
    4. ログファイルの確認
  2. abコマンドを使用した負荷テストの準備
    1. Apache Bench(ab)のインストール方法
    2. インストール確認
    3. テスト環境の準備
    4. ファイアウォールとセキュリティ設定の確認
  3. abコマンドの使い方と基本的なテスト例
    1. abコマンドの基本構文
    2. シンプルなテスト例
    3. テスト結果の見方
    4. 複雑なテスト例
    5. 同時接続数の限界を調べる
    6. 注意点
  4. Siegeを使ったストレステスト手順
    1. Siegeのインストール方法
    2. インストール確認
    3. 基本的な使い方
    4. 詳細なテスト例
    5. テスト結果の見方
    6. 高度な設定と最適化
    7. 注意点
  5. Apacheの設定チューニング方法
    1. httpd.confの場所と編集方法
    2. MaxRequestWorkers(同時接続数の上限)
    3. ServerLimit(サーバープロセスの最大数)
    4. KeepAlive(持続接続)
    5. Timeout(接続タイムアウト)
    6. StartServersとMin/MaxSpareServers(プロセス管理)
    7. Event MPMの活用
    8. 設定反映と確認
    9. まとめ
  6. KeepAlive設定の最適化方法
    1. KeepAliveの有効化
    2. MaxKeepAliveRequests(持続接続の最大リクエスト数)
    3. KeepAliveTimeout(接続維持のタイムアウト時間)
    4. テストとチューニングの実施
    5. 注意点
    6. まとめ
  7. gzip圧縮を使った応答速度の向上方法
    1. mod_deflateモジュールの有効化
    2. gzip圧縮の設定方法
    3. 設定の確認
    4. 圧縮率の調整
    5. テストと検証
    6. 注意点
    7. まとめ
  8. キャッシュ設定による高速化の手順
    1. mod_cacheとmod_expiresの有効化
    2. キャッシュディレクティブの設定
    3. mod_cacheを使用したディスクキャッシュの設定
    4. キャッシュ設定の確認
    5. テストと検証
    6. 注意点
    7. まとめ
  9. まとめ

Apacheの基本的な動作確認方法


Apache HTTP Serverをインストールした後、まず最初に行うべきことは、サーバーが正常に動作しているかを確認することです。この動作確認が、パフォーマンステストやチューニングの基盤となります。

Apacheの起動とステータス確認


Apacheが正しく起動しているかを確認するには、以下のコマンドを使用します。
Linux/Unix環境の場合

sudo systemctl start httpd  # Apacheの起動  
sudo systemctl enable httpd  # 自動起動の設定  
sudo systemctl status httpd  # サーバーステータスの確認  


Windows環境の場合
コマンドプロンプトで以下を実行します。

httpd -k start  # Apacheの起動  
httpd -k stop   # Apacheの停止  
httpd -k restart  # 再起動  

動作確認のためのテストアクセス


ブラウザで以下のURLにアクセスして動作を確認します。

http://localhost  


Apacheが正しく動作している場合、「It works!」またはカスタムのインデックスページが表示されます。

ポートの確認


Apacheがリッスンしているポートを確認するには、次のコマンドを使います。

sudo netstat -tuln | grep httpd


標準では、ポート80または443(SSL)が使用されているはずです。

ログファイルの確認


動作に問題がある場合は、Apacheのログファイルを確認します。
エラーログの確認:

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


アクセスログの確認:

sudo tail -f /var/log/httpd/access_log


ログにはエラーの詳細やアクセスの履歴が記録されており、トラブルシューティングに役立ちます。

これらの手順を行うことで、Apacheが適切に動作しているか確認でき、次の負荷テストに向けた準備が整います。

abコマンドを使用した負荷テストの準備


Apache Bench(ab)は、Apache HTTP Serverの負荷テストを行うためのシンプルで強力なツールです。Apacheに標準で付属しており、リクエストの送信回数や同時接続数を指定してサーバーの応答速度を測定できます。ここでは、abコマンドのインストールから使用準備までを解説します。

Apache Bench(ab)のインストール方法


Linux/Unix環境では、Apache HTTP Serverをインストールした際に自動的にabが含まれます。ただし、環境によっては手動でインストールが必要です。

インストールコマンド例(CentOS/RHEL)

sudo yum install httpd-tools


インストールコマンド例(Ubuntu/Debian)

sudo apt install apache2-utils

Windows環境では、Apache LoungeなどのApacheディストリビューションを利用すると、abが付属しています。Apacheの「bin」ディレクトリに格納されています。

インストール確認


以下のコマンドでabがインストールされているか確認します。

ab -V


バージョン情報が表示されれば、インストールが完了しています。

テスト環境の準備


負荷テストを行う前に、次の項目を準備します。

  • ターゲットURL:テスト対象のURLを用意します。(例:http://localhost/index.html)
  • 十分なネットワーク帯域:ローカル環境以外でテストする場合、ネットワークがボトルネックにならないようにします。
  • Apacheの設定調整:大量のリクエストが発生するため、Apacheの同時接続数やタイムアウト設定を確認します。
sudo vi /etc/httpd/conf/httpd.conf
MaxRequestWorkers 250  
KeepAlive On  


これにより、多くのリクエストを効率的に処理できるようになります。

ファイアウォールとセキュリティ設定の確認


テストを行うサーバーがファイアウォールで保護されている場合、一時的にポート80または443を開放する必要があります。

sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https

これでabを使用した負荷テストの準備が整いました。次は、具体的なabコマンドの使い方とテスト例を解説します。

abコマンドの使い方と基本的なテスト例


Apache Bench(ab)を使うことで、Apache HTTP Serverの応答速度や同時接続数の限界を簡単に測定できます。ここでは、abコマンドの基本的な使い方と、実際のテスト例を解説します。

abコマンドの基本構文


abコマンドの基本的な構文は以下の通りです。

ab -n <リクエスト数> -c <同時接続数> <ターゲットURL>
  • -n:送信する総リクエスト数
  • -c:同時に処理する接続数(並列数)
  • ターゲットURL:リクエストを送信するURL(http://localhost/index.html など)

シンプルなテスト例


以下の例は、100回のリクエストを10並列で送信するテストです。

ab -n 100 -c 10 http://localhost/index.html


これにより、サーバーが短時間でどの程度のリクエストを処理できるかが確認できます。

テスト結果の見方


テスト後に出力される結果の一例を以下に示します。

Concurrency Level:      10  
Time taken for tests:   2.345 seconds  
Complete requests:      100  
Failed requests:        0  
Requests per second:    42.65 [#/sec] (mean)  
Time per request:       234.5 [ms] (mean)  
Time per request:       23.45 [ms] (mean, across all concurrent requests)  
Transfer rate:          1234.56 [Kbytes/sec] received  
  • Requests per second:1秒間に処理できるリクエスト数(重要な指標)
  • Time per request:1リクエストあたりの平均処理時間
  • Failed requests:失敗したリクエスト数(0であることが理想)

複雑なテスト例


複数のパラメータを組み合わせることで、より実践的な負荷テストが可能です。

ab -n 1000 -c 50 -k http://localhost/index.html
  • -k:KeepAliveを有効化し、接続を維持したまま複数のリクエストを送信します。これにより、接続のオーバーヘッドを減らし、実際のトラフィックに近いシナリオを再現できます。

同時接続数の限界を調べる


サーバーの同時接続数の限界を把握するために、徐々に接続数を増やしてテストします。

ab -n 500 -c 100 http://localhost/index.html


同時接続数が増えるとFailed requestsが増加し始めます。このタイミングでボトルネックが発生している可能性が高いです。

注意点

  • abコマンドはテスト対象のサーバーに負荷をかけるため、本番環境ではなくステージング環境で実施してください。
  • テストが過剰な負荷を与える場合、サーバーがダウンする可能性があります。

これでabコマンドの基本的な使い方とテスト例が理解できました。次は、より高度なストレステストツール「Siege」を使用したテスト方法を解説します。

Siegeを使ったストレステスト手順


Siegeは、多数の仮想ユーザーをシミュレートし、大量のリクエストをApacheサーバーに送ることで負荷テストを行う強力なツールです。Apache Bench(ab)よりも柔軟性が高く、複数のURLに対するストレステストを同時に実施できる点が特徴です。ここでは、Siegeのインストールから基本的な使い方までを解説します。

Siegeのインストール方法


Linux/Unix環境では、次のコマンドでSiegeをインストールできます。

CentOS/RHEL

sudo yum install siege

Ubuntu/Debian

sudo apt install siege

macOS(Homebrewを使用)

brew install siege

インストール確認


インストールが完了したら、次のコマンドでバージョンを確認します。

siege --version


バージョン情報が表示されれば、インストールは成功です。

基本的な使い方


以下のコマンドで基本的なストレステストを実行します。

siege -c <同時接続数> -t <テスト時間> <URL>
  • -c:同時接続ユーザー数
  • -t:テスト時間(例:1M = 1分、30S = 30秒)
  • URL:テスト対象のURL

テスト例:10ユーザーが30秒間アクセス

siege -c 10 -t 30S http://localhost/index.html

詳細なテスト例


50ユーザーが5分間、複数URLに対してアクセスする例

siege -c 50 -t 5M -i -f urls.txt
  • -i:ランダムアクセスモード(インタラクティブ)
  • -f:リクエストするURLを記載したファイルを指定(urls.txtに複数のURLを記載)

urls.txtの例

http://localhost/index.html
http://localhost/contact.html
http://localhost/about.html

テスト結果の見方

Transactions:                   500 hits  
Availability:                   100.00 %  
Elapsed time:                   30.45 secs  
Data transferred:               12.34 MB  
Response time:                  0.23 secs  
Transaction rate:               16.42 trans/sec  
Throughput:                     0.41 MB/sec  
Concurrency:                    9.81  
Successful transactions:        500  
Failed transactions:            0  
Longest transaction:            0.94  
Shortest transaction:           0.12  
  • Availability:サーバーの可用性(100%が理想)
  • Transaction rate:1秒あたりのリクエスト数
  • Response time:リクエストの平均応答時間
  • Failed transactions:失敗したリクエスト数

高度な設定と最適化


デフォルト設定を変更するには、以下のファイルを編集します。

vi ~/.siegerc


たとえば、同時接続数の上限やデフォルトのテスト時間を変更することができます。

concurrent = 50  
time = 5M  
delay = 2  
  • delay:リクエスト間の遅延を指定し、実際のユーザー動作をシミュレートできます。

注意点

  • Siegeは大量のリクエストを送信するため、本番環境ではなくステージング環境でテストしてください。
  • リクエストの間隔を意図的に調整し、サーバーに過度な負荷がかからないように注意が必要です。

これでSiegeを使ったストレステストの基本が理解できました。次は、テスト結果をもとにApacheの設定をチューニングする方法を解説します。

Apacheの設定チューニング方法


負荷テストの結果を分析した後、Apacheの設定を最適化することでパフォーマンスを向上させることができます。特に、同時接続数の制限やメモリ使用量などを適切に調整することが重要です。ここでは、Apacheの主要な設定項目について解説します。

httpd.confの場所と編集方法


Apacheの設定ファイル「httpd.conf」は通常、以下のディレクトリにあります。

/etc/httpd/conf/httpd.conf  # CentOS/RHEL系  
/etc/apache2/apache2.conf   # Ubuntu/Debian系  


編集するには、以下のコマンドを使用します。

sudo vi /etc/httpd/conf/httpd.conf

MaxRequestWorkers(同時接続数の上限)


MaxRequestWorkersは、同時に処理できるリクエスト数を制限します。この値を適切に設定することで、サーバーが過負荷にならないように制御します。

MaxRequestWorkers 250
  • 初期値は150ですが、十分なリソースがある場合は200〜300に増やします。
  • 値が高すぎるとメモリが枯渇する可能性があるため、テストを行いながら調整します。

ServerLimit(サーバープロセスの最大数)


ServerLimitは、Apacheが生成できる子プロセスの上限を設定します。

ServerLimit 300


MaxRequestWorkersよりも小さい値に設定しないよう注意が必要です。

KeepAlive(持続接続)


KeepAliveを有効にすると、クライアントが複数のリクエストを同じ接続で処理でき、接続のオーバーヘッドが削減されます。

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
  • MaxKeepAliveRequestsは1接続あたりの最大リクエスト数(通常は100〜200)。
  • KeepAliveTimeoutは接続がアイドル状態で保持される時間(5秒程度が推奨)。

Timeout(接続タイムアウト)


Timeoutは、クライアントからの応答待ち時間を指定します。値が大きすぎるとリソースが浪費されるため、適度に設定します。

Timeout 60


一般的には30〜60秒に設定します。

StartServersとMin/MaxSpareServers(プロセス管理)


Apacheが起動時やリクエスト待機時に保持するプロセスの数を調整します。

StartServers 5
MinSpareServers 5
MaxSpareServers 10
  • StartServers:Apache起動時に生成されるプロセス数。
  • MinSpareServers:アイドル状態で維持されるプロセスの最小数。
  • MaxSpareServers:アイドル状態で維持されるプロセスの最大数。

Event MPMの活用


ApacheはMPM(Multi-Processing Module)によって動作します。デフォルトのPrefork MPMよりもEvent MPMを使用することで、メモリ消費を抑えつつ多くの接続を処理できます。
Event MPMの有効化方法(Ubuntu/Debian)

sudo a2dismod mpm_prefork  
sudo a2enmod mpm_event  
sudo systemctl restart apache2


CentOS/RHEL系ではhttpd.confで変更

LoadModule mpm_event_module modules/mod_mpm_event.so

設定反映と確認


編集が終わったら、設定を反映させるためにApacheを再起動します。

sudo systemctl restart httpd


設定が反映されたかを確認するには、次のコマンドを使用します。

apachectl configtest


「Syntax OK」と表示されれば、設定に問題はありません。

まとめ


Apacheの設定をチューニングすることで、サーバーの処理能力を大幅に向上させることができます。MaxRequestWorkersKeepAliveの設定を適切に調整し、Event MPMの導入を検討することで、サーバーのパフォーマンスを最大化しましょう。次は、KeepAliveの設定をさらに詳細に解説します。

KeepAlive設定の最適化方法


Apache HTTP ServerのKeepAlive(持続接続)は、クライアントとサーバー間で同一のTCP接続を使い回し、複数のリクエストを処理する仕組みです。これにより、接続ごとのオーバーヘッドが削減され、応答速度が向上します。特に、画像やCSS、JavaScriptなど複数のリソースを読み込むWebサイトで効果を発揮します。ここでは、KeepAliveの設定方法と最適化のポイントを解説します。

KeepAliveの有効化


デフォルトでは、KeepAliveは無効化されている場合があります。まずはhttpd.confまたはapache2.confを編集して、KeepAliveを有効にします。

sudo vi /etc/httpd/conf/httpd.conf  # CentOS/RHEL系  
sudo vi /etc/apache2/apache2.conf   # Ubuntu/Debian系  

以下の設定を確認・変更します。

KeepAlive On


これにより、クライアントは1回のTCP接続で複数のリクエストを送信できるようになります。

MaxKeepAliveRequests(持続接続の最大リクエスト数)


1つのKeepAlive接続で処理できる最大リクエスト数を指定します。リクエスト数が多すぎると、サーバーが接続を維持し続けてリソースを浪費します。適切なバランスが必要です。

MaxKeepAliveRequests 100
  • 初期値は100が一般的ですが、リソースに余裕がある場合は200〜500程度に設定することで、パフォーマンスが向上します。
  • 無制限にする場合は「0」を指定しますが、本番環境では推奨されません。

KeepAliveTimeout(接続維持のタイムアウト時間)


クライアントが次のリクエストを送信するまでに、サーバーが接続を維持する時間(秒)を指定します。値が大きすぎると接続がアイドル状態で維持され、リソースが無駄になります。

KeepAliveTimeout 5
  • 初期値は5秒程度が適切です。高速応答を求める場合は2〜3秒に短縮することで、接続が効率よく解放されます。
  • サイトの特性に応じて調整し、長時間アイドル状態が続かないようにします。

テストとチューニングの実施


設定変更後、Apacheを再起動して設定を反映します。

sudo systemctl restart httpd  # CentOS/RHEL系  
sudo systemctl restart apache2  # Ubuntu/Debian系  


その後、Apache Bench(ab)やSiegeなどを使い、KeepAliveの有効・無効による応答速度の違いを測定します。

KeepAlive有効のテスト例(100リクエスト/10並列)

ab -n 100 -c 10 http://localhost/index.html

KeepAlive無効のテスト例

KeepAlive Off  
sudo systemctl restart httpd
ab -n 100 -c 10 http://localhost/index.html


結果を比較し、応答速度やリクエスト処理数の改善が確認できれば、KeepAliveの設定が効果的に機能しています。

注意点

  • 低トラフィックサイトでは、KeepAliveを無効にすることでメモリ消費を削減できます。
  • 高トラフィックサイトでは、KeepAliveの適切な設定がパフォーマンス向上に直結します。
  • DDoS攻撃などの影響を防ぐために、KeepAliveTimeoutは短く設定するのが基本です。

まとめ


KeepAliveの最適化は、Apacheの応答速度とサーバー負荷のバランスを取る重要な設定です。特に高トラフィック時のパフォーマンス向上に貢献します。次は、gzip圧縮を使った応答速度の向上方法について解説します。

gzip圧縮を使った応答速度の向上方法


Apache HTTP Serverでは、データ転送量を削減し、クライアントへの応答速度を向上させるためにgzip圧縮を使用します。HTML、CSS、JavaScriptなどのテキストベースのファイルは圧縮率が高く、応答時間を短縮できます。特にモバイルユーザーや低速回線でのアクセスに効果的です。ここでは、Apacheでgzip圧縮を設定する方法を解説します。

mod_deflateモジュールの有効化


gzip圧縮はmod_deflateモジュールを使用します。まずはモジュールが有効になっているか確認します。

Ubuntu/Debian

sudo a2enmod deflate  
sudo systemctl restart apache2  

CentOS/RHEL

sudo vi /etc/httpd/conf/httpd.conf


次の行がコメントアウトされていないか確認し、必要であれば有効化します。

LoadModule deflate_module modules/mod_deflate.so

その後、Apacheを再起動します。

sudo systemctl restart httpd

gzip圧縮の設定方法


httpd.confまたはapache2.confに以下の設定を追加し、gzip圧縮を有効にします。

sudo vi /etc/httpd/conf/httpd.conf  # CentOS/RHEL系  
sudo vi /etc/apache2/apache2.conf   # Ubuntu/Debian系  

以下をファイルの末尾に追加します。

<IfModule mod_deflate.c>  
  # MIMEタイプに基づく圧縮対象の指定  
  AddOutputFilterByType DEFLATE text/html text/plain text/xml  
  AddOutputFilterByType DEFLATE text/css text/javascript application/javascript  
  AddOutputFilterByType DEFLATE application/json application/xml application/xhtml+xml  
  AddOutputFilterByType DEFLATE application/rss+xml application/atom+xml  
  AddOutputFilterByType DEFLATE image/svg+xml  

  # ブラウザの互換性を考慮した設定  
  BrowserMatch ^Mozilla/4 gzip-only-text/html  
  BrowserMatch ^Mozilla/4\.0[678] no-gzip  
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html  

  # 圧縮しないファイルの指定(画像などのバイナリファイル)  
  SetEnvIfNoCase Request_URI \.(gif|jpg|jpeg|png|zip|pdf|ico|mp4|mp3)$ no-gzip  
</IfModule>  

設定の確認


Apacheを再起動して設定を反映します。

sudo systemctl restart httpd  # CentOS/RHEL系  
sudo systemctl restart apache2  # Ubuntu/Debian系  

その後、ブラウザのデベロッパーツールやcurlコマンドでgzip圧縮が有効になっているか確認します。

curl -I -H 'Accept-Encoding: gzip,deflate' http://localhost/index.html


Content-Encoding: gzipが含まれていれば、gzip圧縮が有効です。

圧縮率の調整


圧縮率はCPU負荷に影響するため、サーバーのリソース状況に応じて調整します。圧縮率は1(最小)から9(最大)まで指定できます。

DeflateCompressionLevel 6
  • 6が一般的な推奨値で、圧縮率とパフォーマンスのバランスが良いとされています。
  • サーバーに余裕がある場合は7〜9に設定しても構いませんが、CPU負荷が高まる点に注意してください。

テストと検証


Apache Bench(ab)を使って、gzip圧縮の有無によるパフォーマンスを比較します。

gzip圧縮有効時

ab -n 100 -c 10 http://localhost/index.html

gzip圧縮無効時(設定を一時的にコメントアウト)

sudo vi /etc/httpd/conf/httpd.conf
# AddOutputFilterByType DEFLATE text/html  をコメントアウト
sudo systemctl restart httpd
ab -n 100 -c 10 http://localhost/index.html


結果として、gzip有効時はデータ転送量(Kbytes/sec)が減少し、応答速度が向上しているはずです。

注意点

  • 画像や動画などのバイナリファイルは圧縮しないことが重要です。これらのファイルは既に圧縮されているため、再圧縮しても効果がありません。
  • ブラウザ互換性に注意し、一部の古いブラウザで問題が発生しないように設定します。

まとめ


gzip圧縮を導入することで、Apacheの応答速度を向上させ、転送データ量を削減できます。特に、テキストベースのリソースが多いサイトでは大きな効果を発揮します。次は、キャッシュ設定による高速化の手順について解説します。

キャッシュ設定による高速化の手順


Apache HTTP Serverでキャッシュを適切に設定することで、リソースの読み込み速度が向上し、サーバー負荷が軽減されます。キャッシュは、ブラウザやプロキシサーバーがリソースを再利用する仕組みで、静的コンテンツ(画像、CSS、JavaScriptなど)に特に効果的です。ここでは、Apacheのmod_cachemod_expiresを使用したキャッシュ設定手順を解説します。

mod_cacheとmod_expiresの有効化


キャッシュ機能を使うには、mod_cachemod_expiresを有効にする必要があります。

Ubuntu/Debian

sudo a2enmod cache  
sudo a2enmod cache_disk  
sudo a2enmod expires  
sudo systemctl restart apache2  

CentOS/RHEL

sudo vi /etc/httpd/conf/httpd.conf  


次の行がコメントアウトされていないか確認し、必要であれば有効化します。

LoadModule cache_module modules/mod_cache.so  
LoadModule cache_disk_module modules/mod_cache_disk.so  
LoadModule expires_module modules/mod_expires.so  


設定を反映するためにApacheを再起動します。

sudo systemctl restart httpd  

キャッシュディレクティブの設定


httpd.confまたはvhostファイルに以下のキャッシュ設定を追加します。

sudo vi /etc/httpd/conf/httpd.conf  
<IfModule mod_expires.c>  
  ExpiresActive On  
  ExpiresByType text/html "access plus 1 hour"  
  ExpiresByType text/css "access plus 1 week"  
  ExpiresByType text/javascript "access plus 1 week"  
  ExpiresByType application/javascript "access plus 1 week"  
  ExpiresByType image/jpeg "access plus 1 month"  
  ExpiresByType image/png "access plus 1 month"  
  ExpiresByType image/gif "access plus 1 month"  
  ExpiresByType application/pdf "access plus 1 month"  
</IfModule>  
  • text/html:HTMLファイルのキャッシュ期間は1時間
  • CSS、JavaScript1週間
  • 画像ファイル1ヶ月

これにより、静的コンテンツがブラウザにキャッシュされ、次回以降のアクセス時に再読み込みを防ぎます。

mod_cacheを使用したディスクキャッシュの設定


mod_cache_diskを使うことで、サーバー側でリソースをキャッシュし、ディスクから高速に配信できます。

<IfModule mod_cache.c>  
  CacheEnable disk /  
  CacheRoot /var/cache/apache2/mod_cache_disk  
  CacheDirLevels 2  
  CacheDirLength 2  
  CacheMaxFileSize 1000000  
  CacheMinFileSize 1  
  CacheDefaultExpire 3600  
  CacheIgnoreNoLastMod On  
  CacheIgnoreHeaders Set-Cookie  
</IfModule>  
  • CacheRoot:キャッシュファイルを保存するディレクトリ
  • CacheDefaultExpire:デフォルトのキャッシュ期間(秒)
  • CacheMaxFileSize:キャッシュ対象の最大ファイルサイズ(バイト)
  • CacheIgnoreHeaders Set-Cookie:Cookieが設定されているレスポンスをキャッシュしない

ディレクトリを作成し、適切なパーミッションを設定します。

sudo mkdir -p /var/cache/apache2/mod_cache_disk  
sudo chown -R apache:apache /var/cache/apache2  

キャッシュ設定の確認


設定が反映されたかを確認するには、次のコマンドを使用します。

curl -I http://localhost/index.html  


Cache-ControlExpiresヘッダが付与されていれば、キャッシュが正常に動作しています。

HTTP/1.1 200 OK  
Cache-Control: max-age=604800  
Expires: Mon, 01 Jan 2024 12:00:00 GMT  

テストと検証


Apache Bench(ab)を使ってキャッシュ有効時と無効時のパフォーマンスを比較します。

キャッシュ有効時のテスト例

ab -n 1000 -c 50 http://localhost/index.html  

キャッシュ無効時(mod_cacheを無効化)

sudo vi /etc/httpd/conf/httpd.conf  
# CacheEnable disk / の行をコメントアウト  
sudo systemctl restart httpd  
ab -n 1000 -c 50 http://localhost/index.html  

リクエスト処理速度サーバー負荷の違いを確認し、キャッシュの効果を検証します。

注意点

  • 動的コンテンツ(PHPなど)はキャッシュしないように注意が必要です。
  • セキュリティ情報や個人データを含むページでは、キャッシュを無効にします。
CacheDisable /login  
CacheDisable /admin  
  • キャッシュが過剰に蓄積されると、ディスク容量を圧迫するため、定期的にクリアするスクリプトを導入します。
sudo rm -rf /var/cache/apache2/mod_cache_disk/*

まとめ


Apacheのキャッシュ設定を適切に行うことで、サーバーの応答速度を向上させ、負荷を軽減できます。mod_cacheやmod_expiresを使い、静的コンテンツのキャッシュ戦略を構築することで、ユーザーエクスペリエンスが向上します。次は、記事のまとめに入ります。

まとめ


本記事では、Apache HTTP Serverのインストール後に行うべきパフォーマンステストと、応答速度を向上させるための具体的な設定方法について解説しました。

Apache Bench(ab)やSiegeを使用した負荷テストにより、サーバーの限界やボトルネックを特定し、MaxRequestWorkersKeepAliveの最適化を行うことで処理能力を引き上げることが可能です。さらに、gzip圧縮(mod_deflate)キャッシュ設定(mod_cache, mod_expires)を導入することで、データ転送量を削減し、クライアントへの応答速度を大幅に向上させることができます。

パフォーマンスの向上には、継続的なテストと設定の見直しが不可欠です。定期的に負荷テストを実施し、サーバーの状況に応じて最適な構成を維持することが、安定したWebサービスの提供に繋がります。

これらの手順を踏むことで、Apache HTTP Serverは高負荷にも耐えられる信頼性の高いWebサーバーとして運用できるでしょう。

コメント

コメントする

目次
  1. Apacheの基本的な動作確認方法
    1. Apacheの起動とステータス確認
    2. 動作確認のためのテストアクセス
    3. ポートの確認
    4. ログファイルの確認
  2. abコマンドを使用した負荷テストの準備
    1. Apache Bench(ab)のインストール方法
    2. インストール確認
    3. テスト環境の準備
    4. ファイアウォールとセキュリティ設定の確認
  3. abコマンドの使い方と基本的なテスト例
    1. abコマンドの基本構文
    2. シンプルなテスト例
    3. テスト結果の見方
    4. 複雑なテスト例
    5. 同時接続数の限界を調べる
    6. 注意点
  4. Siegeを使ったストレステスト手順
    1. Siegeのインストール方法
    2. インストール確認
    3. 基本的な使い方
    4. 詳細なテスト例
    5. テスト結果の見方
    6. 高度な設定と最適化
    7. 注意点
  5. Apacheの設定チューニング方法
    1. httpd.confの場所と編集方法
    2. MaxRequestWorkers(同時接続数の上限)
    3. ServerLimit(サーバープロセスの最大数)
    4. KeepAlive(持続接続)
    5. Timeout(接続タイムアウト)
    6. StartServersとMin/MaxSpareServers(プロセス管理)
    7. Event MPMの活用
    8. 設定反映と確認
    9. まとめ
  6. KeepAlive設定の最適化方法
    1. KeepAliveの有効化
    2. MaxKeepAliveRequests(持続接続の最大リクエスト数)
    3. KeepAliveTimeout(接続維持のタイムアウト時間)
    4. テストとチューニングの実施
    5. 注意点
    6. まとめ
  7. gzip圧縮を使った応答速度の向上方法
    1. mod_deflateモジュールの有効化
    2. gzip圧縮の設定方法
    3. 設定の確認
    4. 圧縮率の調整
    5. テストと検証
    6. 注意点
    7. まとめ
  8. キャッシュ設定による高速化の手順
    1. mod_cacheとmod_expiresの有効化
    2. キャッシュディレクティブの設定
    3. mod_cacheを使用したディスクキャッシュの設定
    4. キャッシュ設定の確認
    5. テストと検証
    6. 注意点
    7. まとめ
  9. まとめ