Подтвердить что ты не робот

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

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

Sitecore 7.2

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

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

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

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

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

4b9b3361

Ответ 1

  • В публикации CM публикация запроса отправляется в таблицу EventQueue на CD-диске, где она обрабатывается в соответствии с расписанием публикации экземпляра.
  • Столбец InstanceName в таблице EventQueue сохраняет уникальное имя каждого экземпляра Sitecore (по умолчанию это имя Machine Name + IIS Instance Name, но может быть установлено в web.config). Это позволяет событиям собирать отдельные экземпляры компакт-дисков в среде с балансировкой нагрузки.
  • Таблица 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 для запуска очистки script, описанного в Руководстве по настройке CMS (Страница 10: http://sdn.sitecore.net/upload/sitecore7/70/cms_tuning_guide_sc70-usletter.pdf)

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

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