1

在我们的 Sitecore (6.6) 实现中,我们使用 Lucene 索引。在我们的 PROD 服务器中,索引计费过程非常缓慢。目前它有 5000 多个条目在索引队列中等待。

我使用的查询(在主数据库中),

select * from Properties (check the index last run time)

select * from History where created > 'last index updated time'

由于这种延迟,创建的数据不会反映它们在网站上的变化。这个队列也在不断增加。当站点下线时,索引构建会在一段时间后赶上。

它是一个阅读量很大的网站。

我们遇到了 CPU 变高的问题,但现在它们已被排序。由于 CPU 高问题,我们认为索引构建滞后。但现在 CPU 运行在 30-40% 左右。lucene 索引队列的增加率仍然很高。

我该如何解决这个问题?请帮忙。

4

2 回答 2

2

您需要设置数据库维护任务,以便定期刷新历史表。如果您有大量索引的站点,则此表可能会变得过大。我认为默认作业会使用超过 30 天的所有内容清除此表 - 您可以将其设置得更低。比如1天,或者几天。

SDN上的这篇文章涵盖了大部分标准维护任务:http ://sdn.sitecore.net/Articles/Administration/Database%20Maintenance.aspx

有关搜索、索引和性能的更多一般信息:http: //sdn.sitecore.net/upload/sitecore6/65/sitecore_search_and_indexing_sc60-65-a4.pdf#search=%22clean%22

于 2013-09-23T13:27:45.517 回答
0

我认为您需要退后一步,先问一下为什么要向历史记录表添加如此多的条目,然后再查看可以对 Sitecore 进行哪些配置更改。

您应该根据您的实施的每个用例在您的开发环境中跟踪您的代码,以查找对 Sitecore API 的所有调用,其中一个项目是:

  1. 添加到 Sitecore 树中
  2. 已编辑 - 更改任何字段项,包括安全性、演示文稿、工作流程、发布限制等。
  3. 重复
  4. 从 Sitecore 树中删除
  5. 搬到了一个新的位置。
  6. 有一个新版本被添加
  7. 已删除版本

在您进行操作时,请确保对项目的所有编辑操作都在单个 Sitecore.Data.Items.Item.Editing.BeginEdit() 和 Sitecore.Data.Items.Item.Editing.EndEdit() 调用中执行可能,以便将更改作为单个编辑操作执行,而不是多个。每次调用 Sitecore.Data.Items.Item.Editing.EndEdit() 时,都会在历史表中插入一条新记录,因此不必要的编辑只会导致历史表大小增加。

如果您使用 Sitecore.Data.Items.Item.CopyTo() 方法复制项目,请记住该项目的所有版本以及该项目的后代都将被复制。这意味着历史记录表中将包含已复制项目的每个版本的记录。如果您只需要最新版本并因此在创建新项目后从新项目中删除旧版本,那么您应该再次注意,从项目中删除版本将导致在历史表中插入每个已删除版本的记录。

如果您已将上述所有操作最小化到使系统正常运行所需的最低限度,您应该会发现 Lucene 索引将保持最新状态,而无需更改 Sitecore 的默认索引配置。

于 2014-09-17T06:42:10.943 回答