Sitecore EventQueue Таблица выходит из-под контроля
У нас есть проблема с тем, что таблица EventQueue очень быстро растет, до 3 тыс. Записей в секунду и никогда не очищает записи (на данный момент 30 миллионов). Наша среда имеет следующие настройки:
Sitecore 7.2
- 4 CD-сервера и 1 CM-сервер
- Все четыре CD-сервера сбалансированы по нагрузке.
- CD1 и CD2 указывают на сервер DB1. CD3 и CD4 указывают на DB2.
- сервер Существует 2 цели публикации (по одной на каждую БД).
- Репликация - это настройка для базы данных Core на всех серверах (CM, CD)
- EventQueue включен
У меня есть несколько вопросов, поэтому я разделю их на отдельные позиции.
Когда публикуется публикация для всех серверов CD, обновленное содержимое отправляется непосредственно из базы данных CM в базы данных CD (все правильные таблицы) или отправляется в таблицу EventQueue в базе данных CD, и на сервере CD есть задание / Задача, которая смотрит на таблицу и обновляет по мере необходимости.
В зависимости от ответа на первый вопрос, если есть два CD-сервера, указывающие на одну и ту же БД, как они узнают, должны ли они обрабатывать таблицу EventQueue (не будут ли они каждый обрабатывать таблицу и дублировать усилия)
Почему таблица EventTable не очищена? Как очищается, когда очищается?
1 ответ
- При публикации CM запрос на публикацию отправляется в таблицу EventQueue на компакт-диске, где он обрабатывается в соответствии с расписанием публикации экземпляра.
InstanceName
В столбце таблицы EventQueue хранится уникальное имя каждого экземпляра Sitecore (по умолчанию это имя компьютера + имя экземпляра IIS, но его можно задать в файле web.config). Это позволяет собирать события отдельным экземпляром CD в среде с балансировкой нагрузки.Таблица 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.