13

我们遇到了 EventQueue 表有时增长非常快的问题,每秒最多 3k 条记录,并且从未清除记录(截至目前为 3000 万条)。我们的环境有以下设置:

站点核心 7.2

  • 4 个 CD 服务器和 1 个 CM 服务器
  • 所有四个 CD 服务器都是负载平衡的。
  • CD1 和 CD2 指向 DB1 服务器 CD3 和 CD4 指向 DB2
  • 服务器有 2 个发布目标(每个 DB 一个)合并
  • 为所有服务器(CM、CD)的核心数据库设置复制
  • 事件队列已启用

我有几个问题,所以我会将它们分解为单独的行项目。

  1. 当为所有 CD 服务器发布发布时,更新的内容是直接从 CM db 发送到 CD db(所有正确的表)还是发送到 CD db 中的 EventQueue 表并且 CD 服务器有作业/查看表格并根据需要进行更新的任务。

  2. 根据对第一个问题的回答,如果有 2 个 CD 服务器指向同一个数据库,他们如何知道是否应该处理 EventQueue 表(他们是否每个人都处理该表并重复工作)

  3. 为什么 EventTable 表没有被清除?怎么清零,什么时候清零?

4

1 回答 1

16
  1. 在 CM 发布时,发布请求被发送到 CD db 上的 EventQueue 表,在该表中根据实例的发布计划对其进行处理。
  2. EventQueue 表中的InstanceName列存储每个 Sitecore 实例的唯一名称(默认为机器名称 + IIS 实例名称,但可以在 web.config 中设置)。这使负载平衡环境中的单个 CD 实例能够拾取事件。
  3. EventQueue 表由 web.config 元素中定义的 Sitecore 任务清除<scheduling>,尽管我过去曾见过这种行为不端。默认情况下,设置如下:

    <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。

于 2014-06-12T20:41:01.410 回答