Elastic Load Balancing (ELB) のバックエンドサーバーとして Apache または NGINX を実行するインスタンスを使用します。最適なパフォーマンスを得るには、どの設定を使用すればいいですか?

ロードバランサーに最適な設定は、お客様のユースケースによって異なります。最良のパフォーマンスを得るには、バックエンドアプリケーションの応答時間とクライアントの要件を分析する必要があります。

バックエンドで Apache または NGINX を実行している場合は、次のパラメータがリクエスト処理に影響を及ぼす可能性があります。
注意: 設定を更新したら、Apache または NGINX を再起動します。

クライアントヘッダータイムアウト (Apache の Timeout、NGINX の client_header_timeout)
ロードバランサーでアイドル接続を適切に切断できるように、アプリケーションのアイドルタイムアウトは、ロードバランサーに設定されたアイドルタイムアウトよりも大きな値に設定します。ロードバランサーに適切に通知せずに、バックエンドサーバーで接続を終了すると、504 エラーが表示されることがあります。

キープアライブ (Apache の KeepAlive、NGINX の keepalive_disable)
CPU 使用率を削減し、応答時間を改善するには、キープアライブをオンにします。キープアライブをオンにすると、ロードバランサーで、HTTP リクエストの度に新しい TCP 接続を確立する必要がありません。

キープアライブタイムアウト (Apache の KeepAliveTimeout、NGINX の keepalive_timeout)
キープアライブオプションが有効になっている場合は、アプリケーションタイムアウトよりも長いキープアライブタイムアウトを選択します。

読み取りタイムアウト (Apache の RequestReadTimeout、NGINX の client_header_timeoutclient_body_timeout)
ロードバランサーがリクエストのヘッダーとボディの両方を受信するために接続を十分な時間開いたままにできるように、アプリケーションの応答時間に合わせた読み取りタイムアウトを設定します。

警告: ロードバランサーのアイドルタイムアウト値がバックエンドタイムアウトよりも小さいことを確認してください。

キープアライブリクエストの最大数 (Apache の MaxKeepAliveRequests、NGINX の keepalive_requests)
このオプションでは、キープアライブがオンになった時に単一の TCP 接続で処理するリクエストの数を設定します。リソースの使用を最適化するために、キープアライブリクエストの最大数は 100 以上に設定します。

AcceptFilter (Apache の AcceptFilter、NGINX の accept_filter)
AcceptFilter はデフォルトで有効になっており、接続に TCP_DEFER_ACCEPT オプションを使用するよう Apache に指示します。この設定では、TCP ソケットが「ハーフオープン」状態になることがあります。この場合、ロードバランサーでは接続が確立されているとみなされますが、バックエンドインスタンスでは接続確立していません。ハーフオープン接続は、性能が高くないロードバランサーで最も一般的です。この場合、使用前の接続に時間がかかります。

ロギング
Apache の各リクエストのログに ELB の x-forwarded-for ヘッダーが表示されるように、%{X-Forwarded-For}i オプションを有効にします。このヘッダーには、元クライアントの IP アドレスが含まれます。%D オプションは、アクセスログに対する各リクエストの処理にかかる時間を追加します。

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2016 年 7 月 19 日

更新 : 2018 年 7 月 31 日