第10章 WSGI プロセスのチューニング
長時間実行される API プロセスが原因で要求が失敗する場合は、それらの API プロセスをチューニングすると効果が得られます。
デフォルトでは、IPA は 64 ビットシステム上の API サービスに Web Server Gateway Interface (WSGI) プロセスを 4 つ割り当てます。この 4 プロセスというデフォルトの制限は、メモリー節約のために実装されています。WSGI プロセスの数を増やすと、CPU 使用率とメモリー消費量は増加しますが、より多くの要求を受け入れることができます。デフォルトでは、IPA は WSGI プロセスごとに約 100 - 110 MB の常駐メモリーを API に使用します。これを推奨される上限である 16 プロセスに調整すると、消費量が約 1.3 GB になります。
手順
/etc/httpd/conf.d/ipa.conf
ファイルの processes 値を変更します。WSGIDaemonProcess ipa processes=<4> threads=1 maximum-requests=500 \
WSGIDaemonProcess ipa processes=<4> threads=1 maximum-requests=500 \
Copy to Clipboard Copied!
長時間実行される API エンドポイントは、いずれもチューニングによる効果を得ることができます。このチューニングの決定はユーザーが行う必要があります。
たとえば、OpenStack インストールは、複数のサービスを含む複数のコントローラーで構成されています。各サービスは、すべての内部通信が Transport Layer Security (TLS) 経由で行われるように、証明書を要求します。コントローラーまたはコンピュートノードをインストールまたは更新するときに、これらの証明書が要求または更新されることがあります。複数のコントローラーまたはコンピュートノードが関係する状況では、証明書要求の量がかなり多くなることがあります。これらの要求は自動化されているため、同時またはほぼ同時に発生します。WSGI スレッドの数を増やすと、インストールを完了することができます。
10.1. IPA サーバーパフォーマンスの向上のための CPU 使用率の最適化
大量の証明書発行タスク中にパフォーマンスの制限が発生する場合は、CPU と Web Server Gateway Interface (WSGI) プロセスの数を調整すると、IPA サーバーの同時リクエスト処理能力が大幅に向上します。
4 つの CPU で設定されたサーバーに、70 台のクライアントがそれぞれ 7 つの証明書 (合計 490 の証明書) を要求したところ、要求量がサーバーの処理能力を超えたため、サーバータイムアウトが発生しました。
CPU の数を 8 に増やし、それに合わせて WSGI プロセスの数を 8 にすると、証明書処理能力が 630 個の証明書まで増加しました。CPU の数を 100% 増やしても、増加した処理能力は 4 CPU 設定に比べて 28% でした。CPU の数をさらに 16 に増やしても、WSGI プロセスが 8 つの場合、パフォーマンスは向上しませんでした。ただし、WSGI プロセスの数を 16 に増やすと、サーバーは 110 台のクライアントからの 770 個の証明書を処理しました。つまり、8 CPU 設定に比べて 22% の改善が見られました。
CPU の数を 2 倍にした場合、WSGI プロセスをそれに応じて調整すれば、証明書発行能力は平均 25% 増加しました。これは、ボトルネックを防ぎ、サーバーのパフォーマンスを最適化するために、CPU プロセスと WSGI プロセスの両方を一緒にスケーリングする必要性を明確に示しています。