こんにちは、 Power BI サポート チームの山崎です。
Power BI のオンプレミス データ ゲートウェイには、複数のユーザーで共有および利用できるものと、個人利用を目的とした個人用モードがあります。
Microsoft が推奨している前者のオンプレミス データ ゲートウェイは Windows サービスとして動作しておりますが、メンテナンス等のためにゲートウェイ アプリをインストールしている OS の再起動を実施したあと、このサービスが起動していないことでオンプレミス データ ゲートウェイが利用できないとお問合せをいただくことがあります。
そこで、本記事では、オンプレミス データ ゲートウェイのサービスが自動起動しない問題に直面した際の対処法についてご紹介いたします。
重要
本記事は弊社公式ドキュメントの公開情報を元に構成しておりますが、本記事編集時点と実際の機能に相違がある場合がございます。
最新情報につきましては、参考情報として記載しておりますドキュメントをご確認ください。
PBIEgwService について
オンプレミス データ ゲートウェイのサービスは、PBIEgwService というサービス名で Windows サービスとして動作しています。
サービスの基本的な情報は以下の通りです。
サービス名:PBIEgwService
表示名:On-premises data gateway service
説明:The on-premises data gateway service
実行ファイルのパス(既定):”C:\Program Files\On-premises data gateway\Microsoft.PowerBI.EnterpriseGateway.exe”
スタートアップの種類:自動
ログオン アカウント(既定):NT SERVICE\PBIEgwService
依存関係:なし
状態の確認
オンプレミス データ ゲートウェイを利用するためには、オンプレミス データ ゲートウェイ アプリをインストールした OS 上で、PBIEgwService のサービスが実行中状態である必要があります。
OS の “サービス”(services.msc)から、ご利用中のオンプレミス データ ゲートウェイ のサービスの状態が実行中になっているか確認してみましょう。
1.”ファイル名を指定して実行” を起動し、[services.msc]と入力しOKをクリックします。
2.サービス一覧が表示されるので、On-premises data gateway service を探し、状態が ”実行中” となっていることを確認します。
この時、状態が空欄の場合はサービスが動いていないので、オンプレミス データ ゲートウェイが利用できません。
PBIEgwService の起動について
PBIEgwService は、既定ではスタートアップの種類が“自動”となっていますので、OS 起動時に自動でサービスが起動され、実行中の状態に移ります。
しかしながら、OS 再起動時に、他のサービスやプロセスの起動が集中し、正常にサービスの起動が行えないことがあります。PBIEgwService が開始されていない場合は、次の項目でご案内する方法で、Windows ログを確認してみましょう。
Windows ログの確認
PBIEgwService が起動しなかった状況を確認するためには、Windows のイベントビューアーを使用してログを確認します。前回の OS 起動タイミング以降に、以下ログが記録されていないか確認します。
1.”ファイル名を指定して実行” を起動し、[eventvwr.msc]と入力しOKをクリックします。
2.イベントビューアーが起動するので、左ペインの「Windows ログ」→「システム」を選択します。
3.リストの中から、以下のように PBIEgwService の接続待機中にタイムアウトになったことがわかる ID 7009 のイベントが記録されていないか注目します。
ログの名前: System
ソース: Service Control Manager
日付: yyyy/mm/dd hh:mm:ss
イベント ID: 7009
タスクのカテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/A
コンピューター: computer name
説明: PBIEgwService サービスの接続を待機中にタイムアウト (30000 ミリ秒) になりました。
本エラーは、Windows 上で動作するサービスの起動、状態監視、停止などの管理を行っている Windows のコンポーネントである SCM (Service Control Manager) が PBIEgwService サービスの起動を行い、対象のプロセスが起動後、プロセス起動の初期処理を行っている段階で、PBIEgwService サービスが SCM からの応答を返せなくなり 30 秒のタイムアウトを迎えたこと示しています。
一般的に SCM によるサービス起動のタイムアウト (イベント ID 7009 ) は、他サービスの起動やプロセス実行が集中し、一時的な高負荷、ビジー状態が起き応答できない状態となったという状況が多く考えられます。
対処策
サービスの自動起動でタイムアウトが発生し起動に失敗している際、対処策としては以下が有効な場合があります。
1.サービスを遅延起動にする
OS 起動後のサービスの起動タイミングを遅らせるという設定です。
OS 起動直後は複数のサービスが一斉に起動するため高負荷状態となりやすくなることがありますので、サービスの起動タイミングを遅らせることにより、多数サービスが起動される高負荷状況での起動を回避することができます。
ただし、OS 起動後 On-premise Data Gateway サービスの起動開始までの時間が長くなるので、OS 起動後サービスが利用できるようになるまでの時間が長くなる場合があることが考えられます。
実施手順 : (管理者権限で操作)
(1) サービス(services.msc)を起動し、一覧の中から、On-premises data gateway service を右クリックしプロパティを開きます。
(2) スタートアップの種類の欄を、”自動 (遅延開始)” に変更します。
(3) 次回、OS 起動時から遅延開始の設定が有効になります。
2. サービスのタイムアウトを 既定の 30 秒よりも長くする
高負荷状態では 30 秒以内にサービス起動処理が間に合わないことも想定されます。
そのため、サービスタイムアウトを例えば 60 秒などに延長し、高負荷でサービス起動処理が遅れたとしても正しく起動できるようにします。
なお、この設定は、他のサービスのタイムアウトも一括で変更されます。また、レジストリの変更はシステムに重大な影響を与える可能性があります。
必ず事前にバックアップを取り、自己責任で行ってください。
実施手順 : (管理者権限で操作)
(1) レジストリエディタ(regedit)を起動し、 以下のレジストリキーを変更します。
※ 以下は、例としてタイムアウト値を 60 秒に変更しています。
レジストリキー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
名前: ServicesPipeTimeout
型: DWORD 値
値: 60000 (10進数)
※ ServicesPipeTimeout が存在しない場合には、[編集] メニューの [新規] をポイントし、[DWORD 値] をクリックし作成します。
※ 設定を元に戻す場合は、値を 30000 に設定します。
(2) OS を再起動して設定を反映させます。
次回、OS 起動時からタイムアウトは 60 秒に変更されます。
アンケートご協力のお願い
Japan CSS Support Power BI Blog では、作成する記事やブログの品質向上を目的に、匿名回答でのアンケートを実施しております。
ユーザー様のご意見・ご要望を参考に今後もお役に立てるブログを目指してまいりますので、ぜひご協力いただけますと幸いでございます。
※ 所要時間は1分程度となります。
【ご協力のお願い】Microsoft Japan CSS Power BI Blog ご利用に関するアンケート
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。