Azure ポータル上で Logic Apps(Standard)のデザイナーや実行履歴(Run history / Trigger history)が夜間・週末に 1〜2 分固まるように遅い場合、原因は 1 つではなく「ポータル表示」「ランタイムのコールドスタート」「ストレージ遅延」「ワークフローの肥大化」が重なっていることが多いです。US West・Edge InPrivate という条件も踏まえ、確認すべき場所と改善の打ち手を実務目線で整理します。
まず押さえる:Logic Apps Standard が「遅くなりやすい」構造
Logic Apps(Standard)は、ポータルで見えている UI の裏側で次の要素が連携して動きます。遅延の体感は「どこが詰まっているか」で大きく変わります。
- Azure ポータル(ブラウザー):デザイナーの描画、履歴一覧の取得・フィルタ、画面部品(拡張機能)の読み込み
- Logic Apps ランタイム(ワークフロー ホスト):ワークフロー定義の提供、履歴の参照、ホスト起動(コールドスタート)
- ストレージ(Azure Storage):Standard はストレージ依存が強く、履歴や内部状態、コンテンツ共有などの読み書きが遅いと UI も引きずられます
- ネットワーク/DNS:プライベート エンドポイント、ファイアウォール、プロキシ、DNS 解決の揺らぎで「待ち」が発生します
重要:「デザイナーが遅い」と「実行履歴が遅い」は、同時に起きても原因が別のことがあります。最短で改善するには、ポータル起因か/バックエンド起因かを先に切り分けるのが近道です。
症状から当たりを付ける:よくある原因パターン
| 症状 | 疑うポイント | 理由 | 次にやること |
|---|---|---|---|
| 夜間・週末だけ 1〜2 分固まる | コールドスタート/スケールイン | 利用が減る時間帯にホストが落ち、再起動に時間がかかる | Always Ready / スケール設定、ホスト起動ログ確認 |
| デザイナーは遅いが、Run 履歴は比較的出る | デザイナー ペイロード肥大化 | アクション数・ネスト・大きい JSON で描画が重い | ワークフロー分割、子ワークフロー化、巨大データの外出し |
| Run 履歴一覧が遅い/開かない | ストレージ遅延、履歴保持過多 | 履歴の取得・検索が重い/ストレージが詰まる | 保持期間短縮、フィルタ徹底、ストレージ メトリック確認 |
| ポータルの一部画面だけ遅い | ポータル側の描画・拡張機能 | Cookie 制限、追跡防止、拡張機能、プロキシで UI が待つ | 別プロファイル/別ブラウザー、Cookie 許可、開発者ツールで 429/timeout を確認 |
| US West のみ偏って遅い | リージョン要因・依存先のリージョン不一致 | ホストとストレージが別リージョン、またはリージョン混雑の影響 | ストレージのリージョン確認、Service Health の確認 |
最初の切り分け:ポータル表示が遅いのか、バックエンドが遅いのか
「体感が遅い」原因がポータル UI なのか、Logic Apps ランタイム/ストレージ側なのかで打ち手が変わります。まずは次の順で確認します。
サービス ヘルスで“その時間帯”を確認する
夜間・週末に偏る場合、まず Azure Service Health で US West の Logic Apps / App Service / Storage 周辺に制限や障害が出ていないかを確認します。ここで該当が出るなら「設定変更での完全解決」より、影響回避(別時間帯の運用、別リージョン検討、サポート連携)が現実的です。
「アプリのトップ画面」経由ではなく、ワークフローのブレードを直接開く
ポータルは、入口(概要、アプリ全体、監視の集約画面)によって読み込み項目が違います。遅い導線と速い導線があるなら、UI の集約表示が重い可能性が高いです。
- 対象の Logic App(Standard)を開く
- 該当ワークフローを選ぶ
- 実行履歴(Run history)/トリガー履歴(Trigger history)をワークフロー単位で開く
もしワークフロー直下の履歴は速く、アプリの概要や監視集約だけ遅いなら、まずは運用導線を「ワークフロー直下」に寄せるだけでも体感が改善します。
Edge InPrivate は“速くなることも遅くなることもある”
InPrivate は拡張機能やキャッシュの影響を減らせる一方で、Cookie/サイト データが制限される環境だとポータルが再認証・再初期化を繰り返して遅くなることがあります。次を試して差分を見ます。
- 通常プロファイル(拡張機能を最小化)で再現するか
- 新しいプロファイル(まっさら)で再現するか
- portal.azure.com に対してサードパーティ Cookie を許可(組織ポリシーでブロックされている場合は例外登録)
- 追跡防止(Tracking prevention)を一段下げて差分が出るか
開発者ツールで「待っている相手」を見える化する
原因の見当を付けるには、ブラウザーの開発者ツール(F12)の Network が効果的です。
- 遅い画面を開く直前に Network をクリア
- 遅延中に 時間が長いリクエスト(Pending/Waiting)を探す
- ステータスが 429(スロットリング)、401/403(認可)、timeout になっていないかを見る
ここで 429 が頻発するなら、履歴の大量取得や同時操作でバックエンド側が抑制している可能性があります。まずは「履歴の表示件数を減らす」「時間範囲を絞る」「不要なタブを閉じる」が効きます。
ストレージが原因になりやすい理由と、最短の確認ポイント
Logic Apps Standard はストレージ依存が高く、ストレージのレイテンシ・スロットリング・接続不安定が UI の遅さとして見えやすい設計です。特に夜間・週末の遅延は「利用が減ってホストが落ちる」だけでなく、「ネットワーク経路が変わる(VPN・プロキシ・回線混雑)」や「ストレージ側の一時的な遅延」と組み合わさることがあります。
まず確認するアプリ設定(構成)
ポータルから Logic Apps(Standard)の「構成(Configuration)」を開き、次のキーが想定どおりのストレージを指しているか確認します。
| キー | 役割 | よくある落とし穴 |
|---|---|---|
AzureWebJobsStorage | ランタイムが参照する基幹ストレージ | 別リージョンのストレージを指している/キー更新後に不整合 |
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING | コンテンツ共有(Azure Files)接続 | ファイアウォール・Private Endpoint 配下で名前解決が揺れる |
WEBSITE_CONTENTSHARE | コンテンツ共有のファイル共有名 | 共有名変更・削除、複数環境での取り違え |
ストレージが Private Endpoint / Firewall 配下の場合に必ず見るところ
- プライベート DNS ゾーンが正しくリンクされているか(VNet とのリンク)
- クライアント(あなたの PC)と、ワークフロー ホスト(App Service 側)で 名前解決が一致しているか
- 特定時間帯だけ VPN 経路や DNS サーバーが切り替わり、別の IP に解決されていないか
現場で多いパターン:日中は社内 DNS 経由、夜間は別経路(在宅 VPN など)になり、ストレージ FQDN の解決先や到達性が変わって遅くなる/タイムアウトするケースがあります。
ストレージ疎通・レイテンシを短時間で測る(クライアント側)
Edge InPrivate を使っている=クライアントは固定、という前提でも「回線混雑」や「名前解決の揺れ」は起こり得ます。次のコマンドで最低限の状態を確認できます。
名前解決の確認
nslookup <ストレージアカウント名>.blob.core.windows.net
nslookup <ストレージアカウント名>.file.core.windows.net
nslookup <ストレージアカウント名>.queue.core.windows.net
nslookup <ストレージアカウント名>.table.core.windows.net
443 の疎通と体感レイテンシ(TCP)
Windows 環境なら Sysinternals の psping が便利です(導入できない場合は組織標準ツールで同等確認)。
psping -n 20 <ストレージアカウント名>.blob.core.windows.net:443
psping -n 20 <ストレージアカウント名>.file.core.windows.net:443
結果の見方
| 観測結果 | 疑うこと | 次のアクション |
|---|---|---|
| 時間帯で RTT が大きく跳ねる | 回線混雑、プロキシ経路変更、DNS 切替 | 別ネットワークでも再現するか/DNS・VPN ポリシー確認 |
| 一部 FQDN だけ遅い | 特定サービス(Files 等)経路の問題 | Firewall/PE 設定・DNS レコード・ルーティング確認 |
| 断続的に失敗する | Firewall 制限、PE の到達性、NAT 枯渇など | Network Watcher、企業 FW ログ、App 側の接続ログ確認 |
コールドスタート/スケールイン対策:夜間・週末に効く設定
「夜間・週末にだけ遅い」は、利用が減ることでインスタンスが減り、次にポータルがアクセスした瞬間にホストの起動を待たされる典型パターンです。対策は“常に最低 1 台は温めておく”方向になります。
見直したいスケール関連の設定
ポータルの表示名や配置は変更されることがありますが、概念としては以下を押さえると改善しやすいです。
| 設定・考え方 | 狙い | 推奨の方向性 | 副作用 |
|---|---|---|---|
| Runtime Scale Monitoring(ランタイム スケール監視) | 負荷に応じた適切なスケール判断 | 有効化して挙動を安定させる | 環境によっては監視・スケールのチューニングが必要 |
| Always Ready Instances(常時起動インスタンス) | コールドスタート回避 | 1 以上にして夜間もホストを維持 | 常時稼働分のコストが発生 |
| (参考)Always On(App Service の常時オン) | アイドルで停止しないようにする | 利用可能なら有効化を検討 | プラン/構成により項目がない場合がある |
“温める”ための運用的アプローチ(最後の一手)
設定で安定しない場合、運用でホストを温める方法もあります。例えば、一定間隔で軽い HTTP 叩き(ヘルスチェック相当)を入れてアイドルを避ける方法です。
- 実装が簡単(ただし組織のセキュリティ/運用ルールに従う)
- 根本原因(ストレージ遅延やポータル側の重さ)には効かない
- 「夜間だけ温める」など時間帯制御をするとコストと効果のバランスが取りやすい
デザイナーが遅いときの本命:ワークフロー定義の“重さ”を減らす
Logic Apps のデザイナーは、ワークフロー定義(JSON)を取得してブラウザー上で描画します。アクション数が増えるほど、ネストが深いほど、そして式や静的データが大きいほど、読み込み・レンダリングが一気に重くなります。
デザイナーが重くなる典型パターン
| 重くなる原因 | 現象 | 改善アイデア |
|---|---|---|
| アクション数が多い(目安として 50 超が常態) | デザイナーが固まる/スクロールが重い | 子ワークフロー化、機能単位に分割、共通処理は別フローへ |
| Scope/Condition/For each のネストが深い | 開閉や編集が遅い | 責務分割、ループ内処理を子フローへ逃がす |
| 大きな静的 JSON(マッピング表など)を式や変数で抱える | 初回ロードが激遅 | 外部化(Storage/Key Vault/設定/DB)、必要時に取得 |
| 1 アクションの入力/出力が巨大(添付、バイナリ、大量配列) | Run 履歴の詳細表示が重い | ペイロード縮小、必要箇所だけ保存、ログに切り替え |
分割のコツ:どこで切ると運用が楽になるか
- 入出力境界で切る:例)「受信と検証」「変換」「送信」「エラーハンドリング」
- 外部接続ごとに切る:例)SAP/DB/外部 API など障害領域が分かれやすい単位
- 再利用できる処理を子ワークフロー化:例)共通の署名生成、正規化、監査ログ出力
実務メモ:分割は「読みやすさ」だけでなく、デザイナーの読み込み負荷とRun 履歴の追跡性を同時に改善します。ポータルで触る頻度が高いフローほど、小さく保つ価値が高いです。
Run history / Trigger history が遅いとき:履歴の“量”と“表示の仕方”を変える
履歴が遅い場合は、保存されている履歴が多すぎる・取得条件が広すぎる・入力/出力が巨大、のどれか(または複合)であることが多いです。
保持期間を短くする(必要な分だけ残す)
Standard ではワークフロー設定に「実行履歴の保持期間」に相当する項目があります。監査要件や運用要件と相談のうえ、不要に長い保持を避けるだけで、履歴一覧の取得が軽くなることがあります。
表示件数を減らす(フィルタを先に掛ける)
- ステータス(成功/失敗/キャンセルなど)で絞る
- 日時範囲を狭める(「とりあえず全部」は避ける)
- 対象トリガー/ワークフローを絞る(複数ある場合)
入力/出力の保存方針を見直す
Run 履歴の詳細が重い場合、「必要以上に大きいデータを履歴に残している」可能性があります。機密やパフォーマンスの観点でも、以下の考え方が有効です。
- 業務要件として必要な箇所のみ入力/出力を残す(不要な箇所は最小化)
- 巨大な本体データはストレージ等に退避し、履歴には参照 ID だけ残す
- 監視は Azure Monitor / Application Insights / Log Analytics を主にし、ポータル履歴は“確認用”に寄せる
ポータル/ブラウザー側でできる改善と回避策
遅さが「ポータルの画面読み込み」に寄っている場合、ブラウザー設定と使い方で体感が変わることがあります。
Edge InPrivate を使うなら確認したい項目
| 項目 | 狙い | チェック方法 |
|---|---|---|
| サードパーティ Cookie | ポータル UI の初期化・認証関連の待ちを減らす | portal.azure.com の例外許可(組織ポリシーも確認) |
| 追跡防止(Tracking prevention) | 必要なスクリプト/通信がブロックされるのを避ける | 厳格 → バランス など一段下げて差分を見る |
| 拡張機能 | 通信や DOM 操作を増やす要因を排除 | 新規プロファイルで再現するか確認 |
| プロキシ/セキュリティ ゲートウェイ | WebSocket/長時間接続が切られていないか | 別ネットワーク(テザリング等)で差分を見る |
ポータルは「確認用」、編集はローカルに寄せる
編集頻度が高い場合、ポータル上のデザイナーに依存しすぎると、遅延時の生産性が大きく落ちます。現実的な運用としては次が強いです。
- Visual Studio Code + Logic Apps(Standard)拡張機能で編集・デプロイ
- ポータルは「Run 履歴の確認」「設定変更」「障害時の確認」中心にする
監視で原因を確定させる:見るべきメトリック/ログ
「遅い」だけだと対策が散らばりがちです。次の観点で数字とログを押さえると、原因が絞れます。
ストレージ側(Storage account)の観測
- レイテンシの上昇(成功時の E2E/サーバー処理時間が伸びる)
- スロットリングやエラー(リクエスト過多、接続制限、帯域制限)
- 時間帯での変動(夜間・週末に偏るか)
ホスト側(App Service/ワークフロー ランタイム)の観測
- CPU/メモリが張り付く時間帯があるか(同時実行や重い処理の集中)
- ホスト再起動・起動ログが頻発していないか(コールドスタートの裏付け)
- スケールイン後の初回アクセスが遅いか(Always Ready で改善するか)
「その時間帯に、何が起きていたか」を残す
夜間・週末にだけ遅い場合、翌営業日に再現しないことが多いです。再現したときに次をメモしておくと、原因究明とサポート連携が一気に早くなります。
- 発生日時(タイムゾーンも)
- 対象ワークフロー名、可能なら Run ID
- どの画面(デザイナー/Run history/Trigger history/概要)で遅いか
- どれくらい待ったか(おおよそで OK)
- そのときのブラウザー Network のエラー(429/timeout など)
それでも改善しない場合:現実的なエスカレーション手順
ストレージ疎通に問題がなく、Always Ready 等も設定済みで、複数ブラウザーでも再現し、しかも特定時間帯/US West に偏るなら、ポータル側やプラットフォーム側(ARM のスロットリング、リージョンの一時的制限、内部依存関係)も疑うべき段階です。
Azure サポートに出すときに揃えると強い材料
| 提出物 | なぜ必要か | 補足 |
|---|---|---|
| 発生日時(複数回分) | プラットフォーム側ログと突合しやすい | 夜間・週末の偏りがあるなら特に重要 |
| リージョン(US West)とリソース情報 | 影響範囲の切り分けに必須 | 同一サブスクリプション内の他リソースでも再現するかも添える |
| HAR(ネットワーク トレース) | どの API 呼び出しが詰まっているかが分かる | ブラウザーの開発者ツールからエクスポート |
| スクリーンショット(待ち時間が分かるもの) | 現象の再現性を共有しやすい | 「どの画面が遅いか」を明確に |
| ストレージ/ホストのメトリック(該当時間帯) | アプリ起因かプラットフォーム起因かの判断材料 | ピークやエラー有無が分かると強い |
よくある質問(実務で詰まりやすいポイント)
US West だから遅いのでしょうか?
リージョン要因の可能性はありますが、まずはストレージが同一リージョンか、特定時間帯にだけネットワーク経路が変わっていないか、コールドスタートを抑制できているかを確認すると、リージョン移行の前に改善できるケースが多いです。
InPrivate を使っているのに遅いのはなぜ?
InPrivate はキャッシュが効きにくく、Cookie 制限や再初期化が増えることで、ポータルが重くなることがあります。比較のために「新しい通常プロファイル」で一度だけ試し、差が出るならブラウザー側の調整が効く可能性が高いです。
Always Ready を 1 にすると何が変わりますか?
夜間・週末などアクセスが少ない時間帯でも最低 1 インスタンスを維持しやすくなり、デザイナーや履歴表示の“初回待ち”が減ります。一方で常時稼働分のコストが出るため、運用要件(夜間に操作する頻度)とコストのバランスで決めるのが現実的です。
ワークフローは大きくしても動くのに、なぜ UI が遅くなるのですか?
実行時はサーバー側で段階的に処理できても、デザイナーはブラウザーで「定義全体を読み込み、描画し、編集可能な状態にする」必要があります。アクション数・ネスト・巨大な定義は、フロントエンド負荷として跳ね返りやすいです。
最終チェックリスト(この順でやると早い)
| 優先度 | チェック項目 | 目的 | 改善に繋がる典型 |
|---|---|---|---|
| 高 | Service Health で US West の影響確認 | プラットフォーム影響の切り分け | 影響ありなら回避策・サポート連携へ |
| 高 | ワークフロー直下から Run/Trigger history を開く | ポータル導線の問題を切り分け | 集約画面だけ重いなら運用導線を変更 |
| 高 | ストレージ設定キー(AzureWebJobsStorage 等)の確認 | 依存先のミス・リージョン不一致を潰す | 別リージョン/誤ストレージを是正 |
| 中 | ストレージ疎通(nslookup / 443 レイテンシ) | 時間帯差の裏付け | DNS/回線/プロキシ要因が浮かび上がる |
| 中 | Always Ready / スケール監視の設定 | コールドスタート対策 | 夜間・週末の“初回待ち”が改善 |
| 中 | ワークフロー分割(子ワークフロー化) | デザイナー負荷を根本から下げる | 描画が速くなり編集が安定 |
| 低 | 履歴保持期間の短縮・フィルタ運用 | 履歴一覧の取得負荷を減らす | Run history の体感が軽くなる |
| 低 | HAR を取得してサポートへ | プラットフォーム起因を詰める | ARM/ポータル側の問題特定が進む |
夜間・週末の「1〜2 分待ち」は、コールドスタートとストレージ遅延が絡むと発生しやすく、さらにワークフロー定義が重いと UI 側の負荷も上乗せされます。まずは導線とブラウザー要因を切り分け、次にストレージとスケール設定、最後にワークフローの軽量化へ進めると、遠回りせずに改善へ近づけます。

コメント