この記事では、デフォルトのパブリッシュ メカニズム特有の問題のトラブルシューティングに焦点を当てて説明します。この記事の情報の多くはSitecore Publishing ServiceやExperience Edge Connectorには適用されませんのでご注意ください。
もしSitecore Publishing ServiceやExperience Edge Connectorに関連する問題が発生している場合は、Sitecoreサポート ポータルを使用してSitecoreサポートにご連絡ください。
詳細につきましては、Sitecoreサポート ポータルの使用方法の記事をご参照ください。
デフォルトのパブリッシュに関する問題をトラブルシューティングするには、以下の手順に従ってください。
第一段階は、パブリッシュ操作が開始できることを確認することです。一度に実行できるパブリッシュ操作は一つだけです。パブリッシュのメカニズムは、複数の同時パブリッシュ操作が開始されないように保護されています。しかし、誤った構成によって一つの操作のみというルールが破られる可能性があります。
第二段階は、意図した変更をパブリッシュする適切なオプションを指定して、確実にパブリッシュの操作を開始することです。
パブリッシュ操作の結果は、(選択した)パブリッシュのオプションに依存します。パブリッシュのオプションはSitecore Publishingログに以下のように記録されます。
INFO [PublishOptions]: root:null, language:en, targets:Internet, database:web, mode:Incremental, smart:True children:False, related:True
パブリッシュのモードは四種類あります。
詳細につきましては、アイテムのパブリッシュをご参照ください。
最後のパラメータ(Related)については、特別な注意のもとで使用する必要があります。Relatedがtrueにセットされている場合、パブリッシュされるアイテムの数が大変多くなる可能性があるためです。
詳細につきましては、ディープ スキャンのパブリッシュの有効化または無効化をご参照ください。
パブリッシュ中に処理されるアイテムの選択プロセスをトラブルシューティングする、もしくはパブリッシュ中に実施される必要のあるアクション(skip|update|create|delete)を決定するプロセスをトラブルシューティングするには、traceToLog機能を有効化することをご検討ください。詳細につきましては、以下をご参照ください。
https://doc.sitecore.com/xp/en/users/104/sitecore-experience-platform/publish-an-item-to-your-website.html#logging
重要な注意事項: デフォルトでは全てのアイテムがパブリッシュ可能な状態です。コンテンツが意図せず通常より早くパブリッシュされないよう防止するには、ワークフロー機能、プレビュー パブリッシュ ターゲット、およびパブリッシュ制限を使用してください。
パブリッシュ操作が開始されたこと、およびスケジュールされた変更が処理されたことを確認したら、変更がリモート インスタンスに反映されていることを確認します。
<setting name="EnableEventQueues" value="true" />
SELECT MAX(Stamp) FROM EventQueueこれを、同じデータベースのPropertiesテーブルの「EQStamp」プロパティの値と比較します。
SELECT * FROM Properties WHERE [Key] like '%EQStamp_%'複数のプロパティがクエリにヒットする可能性がある点にご留意ください。データベースを使用するアクティブなSitecoreインスタンスごとにエントリーが一つ存在するはずです。古くなったエントリーは削除することができます。エントリーが存在しない場合は、より詳しい調査が必要となります。
以下のテクニックを使用して、イベントの処理を改善することができます。
timingLevel機能は、イベント処理の速度を遅くしているイベント ハンドラーを特定するのに使用することができます。
例:
<events timingLevel="high">
この機能が有効化されている場合、アプリケーションは個別のイベント ハンドラーの実行時間を含む、各イベントの処理時間を計測して記録します。この機能は診断目的でのみ使用する必要があります。
この段階で、変更がリモート インスタンスに反映されるはずです。
もし変更が反映されない場合、キャッシング レイヤーの一つによって問題が発生している可能性があります。この可能性を検証する(および、問題の影響を緩和する)最も早い方法は、例えばアプリケーションを再起動するなどして、全てのキャッシュをクリアすることです。
再起動によって問題が解決する場合、問題はアプリケーションのキャッシュ(すなわちアプリケーション メモリのどこかに保存されるキャッシュされた結果)によって発生している事がわかります。この問題をトラブルシューティングするには、キャッシュされた結果を提供するプロセスのメモリ ダンプをキャプチャします。
Windows debugger (WinDbg)をSOSEXデバッグ用拡張機能と共に使用し、キャッシュされた値を探します。
例:
!strings /m:"*cached text*"
一致した各エントリーについて、メモリに何を保持しているか確認します。
例:
!mroot <address_of_the_string>
再起動によって問題が解決しない場合、例えばCDNキャッシュやブラウザ キャッシュなどのクライアント側に変更がキャッシュされている可能性があります。
アプリケーション キャッシュのクリアによって問題が解決しない場合、データベースのコンテンツを直接確認して変更がパブリッシュされていることを確認します。ただし、前述の手順2でSitecoreログ ファイルを確認した際に全てのパブリッシュの問題は捕捉できるはずであるため、このシナリオに至る可能性は低いと考えられます。
上記のご提案した手順を実施しても問題が解決できない場合、Sitecoreサポートにご連絡いただき、より詳しい調査に必要な情報をご共有ください。パブリッシュの問題に関する診断情報を収集する方法の詳細につきましては、KB1003463をご参照ください。