Sitecore EventQueue Таблица выходит из-под контроля

У нас есть проблема с тем, что таблица EventQueue очень быстро растет, до 3 тыс. Записей в секунду и никогда не очищает записи (на данный момент 30 миллионов). Наша среда имеет следующие настройки:

Sitecore 7.2

  • 4 CD-сервера и 1 CM-сервер
  • Все четыре CD-сервера сбалансированы по нагрузке.
  • CD1 и CD2 указывают на сервер DB1. CD3 и CD4 указывают на DB2.
  • сервер Существует 2 цели публикации (по одной на каждую БД).
  • Репликация - это настройка для базы данных Core на всех серверах (CM, CD)
  • EventQueue включен

У меня есть несколько вопросов, поэтому я разделю их на отдельные позиции.

  1. Когда публикуется публикация для всех серверов CD, обновленное содержимое отправляется непосредственно из базы данных CM в базы данных CD (все правильные таблицы) или отправляется в таблицу EventQueue в базе данных CD, и на сервере CD есть задание / Задача, которая смотрит на таблицу и обновляет по мере необходимости.

  2. В зависимости от ответа на первый вопрос, если есть два CD-сервера, указывающие на одну и ту же БД, как они узнают, должны ли они обрабатывать таблицу EventQueue (не будут ли они каждый обрабатывать таблицу и дублировать усилия)

  3. Почему таблица EventTable не очищена? Как очищается, когда очищается?

1 ответ

Решение
  1. При публикации CM запрос на публикацию отправляется в таблицу EventQueue на компакт-диске, где он обрабатывается в соответствии с расписанием публикации экземпляра.
  2. InstanceName В столбце таблицы EventQueue хранится уникальное имя каждого экземпляра Sitecore (по умолчанию это имя компьютера + имя экземпляра IIS, но его можно задать в файле web.config). Это позволяет собирать события отдельным экземпляром CD в среде с балансировкой нагрузки.
  3. Таблица EventQueue очищается с помощью задачи Sitecore, определенной в <scheduling> элемент в web.config, хотя я видел это плохое поведение в прошлом. По умолчанию это установлено следующим образом:

    <agent type="Sitecore.Tasks.CleanupEventQueue, Sitecore.Kernel" method="Run" interval="04:00:00"> <DaysToKeep>1</DaysToKeep> </agent>

Ранее я сталкивался с высокими нагрузками на таблицы EventQueue и PublishQueue и рекомендовал бы попробовать следующее (некоторые из них были предложены из поддержки Sitecore):

  • Уменьшить интервал CleanupEventQueue агент (выше)
  • Уменьшите настройку DaysToKeep на CleanupEventQueue (также CleanupPublishQueue не мешало бы)
  • Создайте запланированное задание SQL для запуска сценария очистки, описанного в Руководстве по настройке CMS (Страница 10: http://sdn.sitecore.net/upload/sitecore7/70/cms_tuning_guide_sc70-usletter.pdf)

Наконец, из поддержки Sitecore:

Sitecore рекомендует, чтобы количество строк (записей) в таблицах History, PublishQueue и EventQueue было меньше 1000.

Другие вопросы по тегам