Политика хранения на сервере поиска кода TFS (Elastic Search)

У нас есть TFS 2017.3 с отдельным сервером поиска кода. У нас огромная БД TFS (около 1,6 ТБ), на сервере поиска кода у нас 700 ГБ дискового пространства. Через несколько недель дисковое пространство заканчивается, и поиск кода не работает в tfs. После увеличения дискового пространства поиск возобновляется. Как мы можем сделать политику хранения, чтобы удалить старые данные поиска кода (индекс)? мы не хотим увеличивать больше дискового пространства.

2 ответа

Индекс поиска (код и рабочий элемент) работает в 2 этапа:

  • Массовое индексирование (BI), где индексируются весь код и артефакты рабочих элементов во всех проектах / репозиториях в коллекции. Это
    трудоемкая операция и зависит от размера артефактов
    под коллекцией.
  • Непрерывная индексация (CI), которая обрабатывает все инкрементные обновления артефактов (добавляет / обновляет / удаляет) и индексирует их. Это модель на основе уведомлений, где индексатор прослушивает события TFS и работает на основе этих уведомлений о событиях. CI выполняет практически все операции обновления, включая операции CRUD на уровне Project/Repository/Collection (такие как переименование репозитория, добавление / удаление проекта и т. Д.). Время работы этих CI снова будет зависеть от размера инкрементного обновления. BI всегда предшествует CI, т.е. CI никогда не будет выполняться в проекте / хранилище, пока BI не будет завершен для того же.

Как очистить данные индекса и переиндексировать, пожалуйста, выполните следующие действия:

  • Пауза индексирования для всех коллекций. Запустите следующий сценарий в БД конфигурации TFS https://github.com/Microsoft/Code-Search/blob/master/PauseIndexing.ps1
  • Войдите в систему, на которой запущен Elasticsearch (ES)
  • Остановить службу ES
  • Удалите всю папку Search Index (что-то вроде C:\TfsData\Search\IndexStore или где бы вы ни настроили ее)
  • Перезапустите службы агента заданий TFS на машинах AT.
  • Удалите следующие таблицы из каждой базы данных коллекции.

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: Сброс поискового индекса в Team Foundation Server

Мне удалось уменьшить размер диска после удаления папок ES, переустановки расширения поиска кода, и иногда приходилось запускать MissingIndexFolderTriggerCollectionIndexing.ps1,

Но - я пришел к выводу, что делать это не стоит, размер диска быстро увеличивался и достигал первоначального размера, поэтому я ничего не сохранил.

Хотя Microsoft рекомендует выделить на диске 35% БД, этого нам недостаточно, и мы увеличиваем размер, когда диск заполнен до конца (в настоящее время около 45% от размера БД).

Вывод - не трогайте ES, если диск заполнится, увеличьте размер диска.

Другие вопросы по тегам