アプリケーションのパフォーマンスの問題
システムパフォーマンスのモニタリングプログラムは、アプリケーションJVMのメモリ使用量、アプリケーションサーバーのCPUパフォーマンス、およびデータベースサーバーやアプリケーションのパフォーマンスなどの環境リソースをモニターすることを含みます。パフォーマンスの問題を特定するための重要な最初のステップは、複数層からなるPega Platform™のクライアントサーバーアーキテクチャについて理解することです。これらのアプリケーション層の間では、複数のハンドオフが行われているため、パフォーマンスの問題の原因を特定するのが難しくなります。
パフォーマンス問題を診断するには、問題の根本原因を理解する必要があります。たとえば、あるアプリケーションが画面を表示するのに1分かかるとユーザーから報告があった場合を考えてみます。限られた環境リソース、データベースの相互作用、ルールのアッセンブリーなどが問題の原因となる場合があります。 Pega Platformアプリケーションは、パフォーマンスを内部からモニターし、一般的な開発やパフォーマンスの非効率性を特定するツールを提供します。
設計時のパフォーマンス分析
アプリケーションの設計が不十分だと、診断や解決が難しい、パフォーマンスの阻害要因を含んだアプリケーションになってしまいます。
アプリケーション設計のベストプラクティスであるガードレールを適用すると、このような問題が発生するリスクを軽減することができます。パフォーマンスの高いアプリケーションを実現するためには、ガードレールをはじめとする設計および実装のベストプラクティスに沿って開発サイクルを進めることが最も効果的です。
Pega Platformは、アプリケーションで作成したルールが、所定のガードレールに準拠しているかどうかをモニターします。ルールを保存すると、ガードレール検査が実行されます。ルールがガードレールに違反した場合、Pega Platformは当該ルールにワーニングを適用します。このワーニングには、生じる可能性のあるエラーの重大度と種類、ルールの設定に関連した問題に加え、多くの場合、違反への対処方法の説明が示されます。ルールごとに複数のワーニングを含めることができます。
たとえば、レポート用に最適化されていないプロパティがケースデータBLOBに埋め込まれていると、レポート実行時のパフォーマンスが低下します。下の画像に示されているとおり、このベストプラクティスに違反したレポートディフィニッションを保存すると、パフォーマンスに影響を与える可能性があることを警告するガードレールワーニングメッセージが表示されます。
Pega Platformには、アプリケーションの全体的な品質をすばやく評価できるコンプライアンススコアが用意されています。コンプライアンススコアは、Dev StudioのApplication Guardrailランディングページに表示されます。このページにアクセスするには、「Configure > Application > Quality > Guardrails > Compliance Score」をクリックします。
次の画像で「+」アイコンをクリックすると、コンプライアンススコアの詳細が表示されます。
開発を進めるにあたっては、アプリケーションコンプライアンススコアを確認し、ガードレールワーニングを解決してから実行時パフォーマンス分析に進んでください。Application Guardrailランディングページの「Compliance Details」タブには、ただちに対処すべき重度のワーニングの数や、本番稼働の前に解決しておく必要のある中程度のワーニングなど、特定のパフォーマンスリスクが表示されます。
Pega Platformの最新リリースでは、新しいガードレールの検証やワーニングが追加されるため、アプリケーションのアップデート後はガードレールの再評価やルールの再検証を行ってください。 顧客のアプリケーションが最新リリースにアップデートされた場合、新しいガードレールのベストプラクティスは、すでにアプリケーション内に存在するルールには自動的に適用されません。Pega Platformにはルールセットごとにルールを再検証する機能があるため、新しいワーニングが古いルールに適用されます。
次の問題に答えて、理解度をチェックしましょう。
ランタイムパフォーマンス分析
システムパフォーマンスにはさまざまな側面があるため、パフォーマンステスト分析の最初のステップとして、目標と成果の測定基準を決定することが重要です。たとえば、エンドユーザーはシステムパフォーマンスが応答時間によって判断されると考えている一方で、企業はシステムパフォーマンスがスループットによって判断されると考えている可能性があります。
Pega Platformは、実行時にprconfig.xmlファイルまたはDynamic Settingsで設定したさまざまなパフォーマンスのしきい値に基づいてシステムアラートを生成します。アラートは、特定のインタラクションやルールの実行がパフォーマンスのしきい値を超えたことを示すテキスト入力やメッセージです。また、このメッセージは、リクエスターのタイプ(ブラウザーやバッチリクエスターなど)や、アラートの発生原因となったアクティビティやストリームも特定します。
次のメッセージテキストの例は、しきい値違反のアラートを示しています。
Pega Platformは、アプリケーション処理時にアラートをパフォーマンスアラートログに書き込みます。「Configure > System > Operations > Logs」をクリックしてDev StudioのLogsランディングページを表示し、「Log files>Alert」をクリックしてアラートページを表示できます。 また、Pega Platformはアラートをキャプチャ、分析、管理するためのモニタリングアプリケーション「Pega Diagnostic Center(PDC)」を提供しています。このアプリケーションは、ヘルスチェックダッシュボード、強化された分析機能、データベーステーブル指標の推奨など、モニタリング機能を大幅に向上させます。
次の問題に答えて、理解度をチェックしましょう。
アラートを利用したパフォーマンス問題の特定
アプリケーションのパフォーマンス問題における原因の特定は困難な場合があります。アプリケーションでは、過剰な応答時間、長いリクエストの結果セット、無効なデータの返送、データベースデッドロック、オープン接続が多すぎるなど、さまざまなパフォーマンス問題が発生します。 たとえば、過剰な応答時間などのパフォーマンスの問題は、アプリケーションのSQLクエリーの記述の不足、ネットワークの遅延、またはデータベースサーバーのパフォーマンスの問題が原因で発生する可能性があります。
パフォーマンスアラートは、パフォーマンス問題の根本原因を特定するのにも役立ちます。特定のアラートが頻繁に表示されるパターンや原因を特定するために、アラートの組み合わせを利用することができます。たとえば、過剰な応答時間の問題をトラブルシューティングする場合は、次の表のアラートが原因を特定するのに役立ちます。
一般的なアラートには次のようなものがあります。
| エラー番号 | エラー名 | 推理 |
|---|---|---|
| PEGA0001 | HTTPインタラクションの時間制限超過 | 長時間の計算、データベースへの接続や応答の待ち時間、外部サービスからの情報の待ち時間など、時間しきい値の超過 |
| PEGA0002 | コミット操作時間の制限超過 | データベースコミット操作時間のしきい値超過 |
| PEGA0004 | データベースクエリーで受信したデータ量の制限超過 | クエリーで大量のデータを読み込んだ場合のバイトしきい値の超過 |
| PEGA0005 | クエリーの時間制限超過 | クエリー実行時間のしきい値の超過 |
| PEGA0026 | データベースへの接続時間の制限超過 | データベースへの接続に必要な時間の超過 |
| PEGA0030 | システムへのリクエスター数の制限超過 | リクエスター数の数値基準の超過 |
パフォーマンスアラートのしきい値調整
開発環境では、一部のパフォーマンスアラートは一過性のもので、本番環境では発生しないタスクが原因となっています。しかし、開発環境でトリガーされるパフォーマンスアラートの多くは、最近実行されたルール、またはルールの組み合わせが、パフォーマンスの設定済みしきい値を超えたことを早期に警告します。
アプリケーションパフォーマンスにはさまざまな側面があるため、パフォーマンス向上のための取り組みの最初のステップとして、目標と成果の測定基準を決定することが重要です。 負荷テストでは、本番環境で問題が発生する前に、パフォーマンスの問題を特定することができます。
パフォーマンスのしきい値を変更することで、明確なメリットが得られる場合もあります。たとえば、PegaRULESデータベースから取得する行数を減らすと、ネットワークを介して送信されるバイト数が減り、サーバーにデータを保存するために必要なメモリ量が減る可能性が高くなります。その他の変更は、トレードオフを伴う場合があります。たとえば、ある種類のリソースの需要を減らすと、別の種類のリソースの需要が増えます。これにより、ある指標ではパフォーマンスが向上しますが、別の指標ではパフォーマンスが低下します。 パフォーマンスの低下と改善の余地を特定するには、調査が必要になる場合もあります。使用頻度の低いタスクを200%高速化することは素晴らしいことですが、重要で使用頻度の高いタスクを2%改善することに比べれば、そのタスクの全体的な影響は小さいかもしれません。
パフォーマンスアラートのしきい値にはデフォルト値があり、アプリケーションで明示的に設定されていない場合があります。 パフォーマンスのしきい値を調整するには、Dynamic System Settings(DSS)を使用するのが望ましいですが、prconfig.xmlファイルでシステム設定を変更することもできます。アラートのしきい値はprconfig.xmlで維持できます。ただし、Pega Platformの現在のバージョンは強化されており、prconfig.xmlで以下のパラメーター名と値が「<env name="initialization/settingsource" value="merged" />」に設定されている場合は、dssインスタンスを使用してアラートのしきい値を維持することができます。
次の画像で「+」アイコンをクリックすると、パフォーマンスのしきい値に関するDSSレコードの定義の詳細が表示されます。
たとえば、大量のデータを返すデータベースクエリーを特定したい場合を考えてみます。バイトしきい値機能はデフォルトで無効になっています。 次の画像で「+」アイコンをクリックすると、バイトしきい値の設定方法の詳細が表示されます。
次の問題に答えて、理解度をチェックしましょう。