代码之家  ›  专栏  ›  技术社区  ›  Shayki Abramczyk Cece Dong - MSFT

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

  •  0
  • Shayki Abramczyk Cece Dong - MSFT  · 技术社区  · 6 年前

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

    我们有巨大的tfs数据库(约1.6tb),在代码搜索服务器我们有700gb的dis空间。

    几周后,磁盘空间耗尽,代码搜索在TFS中不起作用。

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

    2 回复  |  直到 5 年前
        1
  •  0
  •   PatrickLu-MSFT    6 年前

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

    • 大容量索引(BI),其中对集合下所有项目/存储库中的整个代码和工作项工件进行索引。这是一个
      耗时的操作,取决于工件的大小
      在收藏品下面。
    • 连续索引(ci)处理对工件的所有增量更新(添加/更新/删除)并对其进行索引。这是 索引器侦听tfs事件的基于通知的模型 并基于这些事件通知进行操作。CI处理几乎 所有更新操作,包括 项目/存储库/集合层(例如存储库重命名, 项目添加/删除等)。这些ci的操作时间将 再次取决于增量更新的大小。我总是 先于ci,即ci永远不会在项目/存储库上执行 直到BI完成。

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

    • 暂停所有集合的索引。在tfs上运行以下脚本 配置数据库 https://github.com/Microsoft/Code-Search/blob/master/PauseIndexing.ps1
    • 登录到正在运行ElasticSearch的计算机
    • 停止ES服务
    • 删除整个搜索索引文件夹(例如, C:\tfsdata\search\indexstore,或配置为 be)
    • 在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

        2
  •  0
  •   Shayki Abramczyk Cece Dong - MSFT    6 年前

    我可以在删除es文件夹、重新安装代码搜索扩展名后减小磁盘大小,有时还必须运行 MissingIndexFolderTriggerCollectionIndexing.ps1 .

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

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

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

    推荐文章