Heroku Connect のパフォーマンスの問題の診断
最終更新日 2022年12月08日(木)
Heroku Connect での同期のパフォーマンスには、多くの要因が影響する可能性があります。読み取りまたは書き込みパフォーマンスの問題が認められる場合は、この記事の手順に従って診断してください。
同期速度を左右する要因の詳細とベストプラクティスは、「Heroku Connect のパフォーマンスを最適化する」を参照してください。
読み取りの問題
手順 1: マッピングの状態を確認する
いくつかの読み取りの問題には、ユーザーの介入が必要です。Heroku Connect ダッシュボード、CLI、または API でマッピングの状態を確認してください。解決方法については、マッピング状態のリファレンスを参照してください。
手順 2: アプリケーションのログを確認する
アプリケーションのログドレインを使用して、app[herokuconnect]
のような記述と ↓
文字が含まれているログを探します。このログエントリには次のようなイベント文字列があります。
Lead UPDATE ↓DATABASE 1 rows (0.01 secs)
この例の文字列は「データベースで、Salesforce の Lead オブジェクトの 1 行に対する更新を処理するのに 0.01 秒かかった」という意味です。
加速ポーリングを有効にしている場合、次のようなログメッセージも出力されます。
Custom_Account__c, Streaming poll found 2 changes
この例は、スケジュールよりも早いポーリングが発生し、Custom_Account_c
で同期する 2 つの変更が見つかったことを示しています。
その他の例と説明については、「一般的なログメッセージ」を参照してください。
手順 3: データベースのパフォーマンスの問題を調査する
データベースで、Salesforce からの変更の処理速度が低下している可能性があります。データベースの問題を調査します。一般的な原因としては、PostgreSQL テーブルでインデックス付きの列が多すぎることなどがあります。詳細は、「Postgres のパフォーマンスの問題に注意する」を参照してください。
データベースは、サイズが小さいと速度が低下する場合もあります。本番環境の Connect ユースケースでは、少なくとも standard-4
、premium-4
、private-4
、または shield-4
プランを使用してください。詳細は、「適切な Heroku Postgres のプランを選択する」を参照してください。
手順 4: Heroku Connect の診断を実行する
Heroku には、接続の現在の状態を検査したり、基本的な操作を実行したりするための CLI プラグインが用意されています。connect:diagnose
コマンドは、一般的な問題を特定するためにいくつかの診断を実行します。詳細は、「Heroku Connect の診断」を参照してください。
パフォーマンス高速化のためのベストプラクティスとして、マップされたオブジェクトのサイズは小さく保ちます。diagnose
コマンドは、接続に最適なオブジェクトごとのマッピングの数とフィールドの数を特定するのに役立ちます。詳細は、「マッピングされたオブジェクトのサイズを最小限に抑える」を参照してください。
手順 5: Salesforce 組織の問題をチェックする
Salesforce ステータスサイトをチェックして、組織で現在問題が発生していないかどうかを確認します。
Heroku Connect セルと Salesforce インスタンスの間の物理的な距離もレイテンシーに影響します。Heroku Connect のダッシュボード設定でセルを確認できます。Connect セルに使用できるリージョンの一覧をここで確認し、お客様の Salesforce 組織に近いリージョンがないかどうかを判断してください。
手順 6: サポートチケットを送信して支援を要請する
ここまでの手順でパフォーマンスの問題を特定できない場合、Heroku Connect 自体に問題がある可能性があります。チケットを送信して Heroku サポートに調査を依頼してください。
書き込みの問題
ここでは、Salesforce 組織または Heroku Postgres データベースが原因で発生するエラーや潜在的なボトルネックを特定する方法をいくつか示します。
手順 1: 書き込みエラーがないかトリガーログを確認する
計画的なメンテナンス期間などのさまざまな理由で、Salesforce への書き込みが失敗することがあります。Salesforce が利用できない場合、Connect では Salesforce が再び利用可能になるまで書き込みをキューに入れます。それ以外のすべてのケースでは、エラーを解決するためにユーザーの介入が必要です。詳細は、「Heroku Connect の書き込みエラー」を参照してください。
手順 2: アプリケーションのログを確認する
アプリケーションのログドレインを使用して、app[herokuconnect]
のような記述と ↑
文字が含まれているログを探します。このログエントリには次のようなイベント文字列があります。
1 Custom_Account__c INSERT ↑SALESFORCE 1 rows total (0.28 secs) [SOAP]
この例の文字列は「Heroku Connect は、SOAP API を使用して、データベースの custom_account__c
テーブルから Salesforce に 1 行を挿入した」という意味です。挿入を Salesforce で処理するのに 0.28 秒かかりました。
その他の例と説明については、「一般的なログメッセージ」を参照してください。
手順 3: Heroku Connect の診断を実行する
Heroku には、接続の現在の状態を検査したり、基本的な操作を実行したりするための CLI プラグインが用意されています。connect:diagnose
コマンドは、一般的な問題を特定するためにいくつかの診断を実行します。詳細は、「Heroku Connect の診断」を参照してください。
手順 4: Salesforce 組織の潜在的なパフォーマンスの問題を調査する
API リクエストに対して応答時間が長くなる場合は、Salesforce 組織の潜在的な問題について調べてください。たとえば、Apex トリガーまたはワークフローの誤動作によって、Connect の書き込み速度が低下する場合があります。
Heroku Connect セルと Salesforce インスタンスの間の物理的な距離もレイテンシーに影響します。Heroku Connect のダッシュボード設定でセルを確認できます。Connect セルに使用できるリージョンの一覧をここで確認し、お客様の Salesforce 組織に近いリージョンがないかどうかを判断してください。
手順 5: データベースの潜在的なパフォーマンスの問題を調査する
Salesforce API の応答時間に問題がない場合、Heroku Connect でデータベースのトリガーログからレコードを取得する処理が低速になっている可能性があります。pg:diagnose などのツールを使用してデータベースを検査します。詳細は、「Postgres のパフォーマンスの問題に注意する」を参照してください。
データベースは、サイズが小さいと速度が低下する場合もあります。本番環境の Connect ユースケースでは、少なくとも standard-4
、premium-4
、private-4
、または shield-4
プランを使用してください。詳細は、「適切な Heroku Postgres のプランを選択する」を参照してください。
手順 6: サポートチケットを送信して支援を要請する
ここまでの手順でパフォーマンスの問題を特定できない場合、Heroku Connect 自体に問題がある可能性があります。チケットを送信して Heroku サポートに調査を依頼してください。