BLOG

Sitecore ブログ
Sitecore DO's&DONT's : やっておいた方がいいこと - イベントキューについての考慮

2017/11/27 15:00
山下 太輝

みなさま、こんにちは。
Sitecore MVP (Technology 2017) の山下と申します。

今日は、Sitecore で Web サイトを運用するにあたって『やっておいた方がいいこと』をご紹介します。

通常、あまり気に掛けることはありませんが、Sitecore がシステム的に使用するデータベースに EventQueue テーブルがあります。
その名の通り、人為的・システム的なイベントをキューするものであり、Sitecore はこのテーブルをもとに様々な処理を行います。

キューされたイベント (レコード) は定期的に削除されるのですが、この削除処理に注意が必要です。
内部的には、レコード分の DELETE を発行し、最後にコミットが発行されます。
そのため、途中でタイムアウトしてしまうと、レコードが削除されずに残ってしまいます。
そうなってしまうと、テーブルが肥大化を続け、果ては Sitecore が正常に動作しなくなることがあります。

基本的には発生しない事象なのですが、例えば、定期的に多数のアイテムを洗い替えする処理をカスタマイズ導入している場合や、開発時に使用していたデータベースをそのまま本稼動用として使用する場合などは注意が必要です。

事象が発生してしまった場合、このテーブルに対して TRUNCATE を発行して様子を見ます。
(TRUNCATE によって直近のイベントが削除されるため、発行時は注意が必要です。)

しかしながら、このテーブルが肥大化していないか監視し続ける事は現実的ではないため、キューされるイベントを極力減らすように設計・開発する事が大事です。
例えば、Publish Agent のモードを Smart ではなく Incremental にするだけでも効果があると思います。

他にも、DO's&DONT's をご紹介していきたいと思っております。
それでは、ありがとうございました。