【问题标题】:Retention policy to TFS Code Search Server (Elastic Search)TFS 代码搜索服务器(弹性搜索)的保留策略
【发布时间】:2019-05-21 21:43:02
【问题描述】:

我们有带有独立代码搜索服务器的 TFS 2017.3。

我们有巨大的 TFS 数据库(大约 1.6TB),在代码搜索服务器中我们有 700GB 的磁盘空间。

几周后磁盘空间用完,代码搜索在 tfs 中不起作用。

在我们增加磁盘空间后,搜索恢复工作。 我们如何制定保留策略来删除旧代码搜索数据(索引)?我们不想增加更多的磁盘空间。

【问题讨论】:

  • 嗨 Shayki Abramczyk,关于这个案例的任何更新。我的回复是否有帮助或给出了正确的方向?
  • 嗨帕特里克!谢谢你的回答,它已经看到了一个漫长的过程和事实它我没有足够的检查它,无论如何 - 我想自动做这个保留,你认为这可能吗?

标签: elasticsearch tfs code-search


【解决方案1】:

搜索索引(代码和工作项)分为两个阶段:

  • 批量索引 (BI),其中对集合下所有项目/存储库中的整个代码和工作项工件进行索引。这是一个
    耗时的操作,取决于工件的大小
    在收藏夹下。
  • 连续索引 (CI),它处理对工件的所有增量更新(添加/更新/删除)并为它们编制索引。这是 索引器侦听 TFS 事件的基于通知的模型 并根据这些事件通知进行操作。 CI处理几乎 所有更新操作,包括 CRUD 操作 Project/Repository/Collection 层(如 Repository 重命名, 项目添加/删除等)。这些 CI 的运行时间将 再次取决于增量更新的大小。 BI 总是 在 CI 之前,即 CI 永远不会在项目/存储库上执行 直到 BI 完成。

如何清理索引数据并重新索引,请按照以下步骤操作:

  • 暂停所有集合的索引。在 TFS 上运行以下脚本 配置数据库 https://github.com/Microsoft/Code-Search/blob/master/PauseIndexing.ps1
  • 登录到运行 Elasticsearch (ES) 的机器
  • 停止 ES 服务
  • 删除整个搜索索引文件夹(类似于, C:\TfsData\Search\IndexStore,或者你配置的任何地方 是)
  • 在 AT 机器上重新启动 TFS 作业代理服务
  • 从每个集合 DB 中删除以下表

DELETE FROM [Search].[tbl_IndexingUnit]
DELETE FROM [Search].[tbl_IndexingUnitChangeEvent]
DELETE FROM [Search].[tbl_IndexingUnitChangeEventArchive]
DELETE FROM [Search].[tbl_JobYield]
DELETE FROM [Search].[tbl_TreeStore]
DELETE FROM [Search].[tbl_DisabledFiles]
DELETE FROM [Search].[tbl_ResourceLockTable]

更多详情请参考 MSDN 中的这篇博客:Resetting Search Index in Team Foundation Server

【讨论】:

    【解决方案2】:

    在删除 ES 文件夹、重新安​​装代码搜索扩展后,我能够减小磁盘大小,有时不得不运行 MissingIndexFolderTriggerCollectionIndexing.ps1

    但是 - 我得出的结论是不值得这样做,磁盘大小正在迅速增长并达到原始大小,所以我没有保存任何东西。

    虽然微软建议给 DB 的 35% 的磁盘空间,但这对我们来说还不够,我们会在磁盘满时增加大小到最后(目前大约是 DB 大小的 45%)。

    结论——不要碰ES,如果磁盘满了就增加磁盘大小。

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 2020-12-11
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多