TFS代码搜索服务器的保留策略(弹性搜索)

时间:2018-05-30 07:07:29

标签: elasticsearch tfs tfs2017 code-search

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

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

几周后,磁盘空间不足,代码搜索在tfs中无效。

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

2 个答案:

答案 0 :(得分:0)

  

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

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

如何清理索引数据和重新索引请遵循以下步骤:

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

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

答案 1 :(得分:0)

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

但是-我得出的结论是这不值得做,磁盘大小正在迅速增长并达到原始大小,因此我什么也没保存。

尽管Microsoft建议提供35%的数据库磁盘空间,但这对我们来说还是不够的,并且当磁盘已满时,我们会增加磁盘空间的大小(目前约为DB大小的45%)。

结论-不要触摸ES,如果磁盘已满,则增加磁盘大小。