メモリー要件の決定
4
HTTP サーバーのパフォーマンスの最適化 サーバーのパフォーマンスの最適化 サーバーのパフォーマンスの最適化 サーバーのパフォーマンスの最適化
この章では、ネットワーク・パラメータのチューニング、ThreadsPerChildパラメータの 変更による効果、およびパフォーマンスに対するロギングの影響など、Oracle HTTP Server のパフォーマンス改善について説明します。
この章には、次の項が含まれています。
■ ネットワークのチューニング
■ ThreadsPerChildパラメータの設定
■ SSLセッション・キャッシュを使用可能にする
■ ロギングのパフォーマンスへの影響について
■ HTTP/1.1プロトコルの利点
ネットワークのチューニング
ネットワークのチューニング ネットワークのチューニング ネットワークのチューニング ネットワークのチューニング
Oracle HTTP Serverの実行時には、考慮点がいくつかあります。
1. メモリーが十分あることを確認します。 システムのメモリー使用量は、タスク マネー ジャの「パフォーマンス」タブの表示でモニター可能です。
2. TCP/IPプロトコル・スタックのみが実行されていることを確認します。 別のプロトコ
ルも稼動している場合、「コントロール パネル」/「ネットワーク」ダイアログ・ボッ クスの「プロトコル」タブにリスト表示されます。 削除するには、マウスで選択して
「削除」をクリックします。 「ネットワーク」ダイアログ・ボックスを閉じると、システ ムの再起動のプロンプトが表示されます。 ただし、先にステップ3に進むほうが簡単で す。
3. 「最適化」から「ファイル共有のスループットを最大にする」を選択します。 「コント ロール パネル」/「ネットワーク」ダイアログ・ボックスの「サービス」タグで、サー バーのプロパティを調べることが可能です。 リストから「サーバー」を選択し、「プロパ ティ」をクリックします。 これにより、TCPの最適化の基準を選択するダイアログ・
ボックスが表示されます。 デフォルトの設定は「ファイル共有のスループットを最大に する」です。 この設定の使用をお薦めします。 これが変更されている場合、デフォルト にリセットし、「OK」をクリックします。 その後、「コントロール パネル」/「ネット ワーク」ダイアログ・ボックスを閉じます。 この設定を変更した場合、システムの再起 動を促すプロンプトが表示されます。前述のステップ1またはこのダイアログ・ボック スで変更を行った場合、再起動します。
前述のステップ以外に、レジストリで個別のTCP/IPパラメータを調整することも可能で
す。 ただし、この作業は複雑であるため、オラクル社ではこの方法をお薦めしません。 ご使
用の環境に対する影響をテストする時間が十分ある場合を除き、前述のステップのTCP/IP のチューニングのみを行うことをお薦めします。
ThreadsPerChild ThreadsPerChild ThreadsPerChild
ThreadsPerChild パラメータの設定 パラメータの設定 パラメータの設定 パラメータの設定
httpd.confファイルのThreadsPerChildパラメータにより、HTTPサーバーが同時に 処理可能なリクエスト数が指定されます。 ThreadsPerChildパラメータ値を超えたリクエ
注意注意注意
注意: 「ファイル共有のスループットを最大にする」または「ネットワー ク アプリケーションのスループットを最大にする」が選択されている場 合、その他のオプションが選択されている場合に比べ、パフォーマンスは 非常によくなります。 また、ネットワーク・アプリケーションではなく、
ファイル共有を最大にした場合、負荷のもとでの応答時間が半分に削減さ れるという結果も得られました。
SSLセッション・キャッシュを使用可能にする
サーブレット・リクエストの サーブレット・リクエストの サーブレット・リクエストの
サーブレット・リクエストの ThreadsPerChild ThreadsPerChild ThreadsPerChild ThreadsPerChild の設定 の設定 の設定 の設定
HTTPサーバーがサーブレットを排他的に処理する場合、ThreadsPerChildパラメータ値は、
JServプロセスが処理可能な同時リクエスト数よりも大幅に小さい値にする必要があります。
JServプロセスが処理可能なリクエストをすべて処理しているときに(jserv.properties
ファイルのsecurity.maxConnectionsで指定されているように)、HTTPサーバーが
JServプロセスへの接続を確立しようとすると、遅延が発生します。
これに伴うレイテンシレイテンシレイテンシレイテンシの増加を防ぐには、JServプロセスが処理可能なリクエスト数の半分 の数値にThreadsPerChildを設定します。 たとえば、4つのJServプロセスがあり、それ ぞれsecurity.maxConnections値が10だとします。この場合、JServプロセスが処理可 能なリクエスト数の合計は40なので、ThreadsPerChildを20に設定します。
静的ページのリクエストの 静的ページのリクエストの 静的ページのリクエストの
静的ページのリクエストの ThreadsPerChild ThreadsPerChild ThreadsPerChild ThreadsPerChild の設定 の設定 の設定 の設定
リクエストを処理可能な同時スレッド数を増加するほど、サーバーが処理可能なリクエスト が増加します。ただし、高負荷のもとでスレッド数が多すぎる場合、リクエストの処理速度 が低下し、サーバーによるシステム・リソースの消費が増加することを認識する必要があり ます。
静的ページ・リクエストの社内テストでは、ThreadsPerChildを1つのCPUあたり20に 設定した場合、良好な応答時間応答時間応答時間およびスループット応答時間 スループットスループットスループットの結果が得られました。 たとえば、CPU が4つある場合、ThreadsPerChildを80に設定します。この設定でCPUの使用率が 85%を超えない場合、ThreadsPerChildを増加することが可能ですが、使用可能なスレッ ドを使用していることを確認する必要があります。 これは、mod_statusユーティリティを 使用して確認可能です。