Политика хранения для сервера поиска кода TFS (эластичный поиск)

У нас есть TFS 2017.3 с отдельным сервером поиска кода.

У нас есть огромная БД TFS (около 1,6 ТБ), на сервере поиска кода у нас есть 700 ГБ свободного места.

Через несколько недель место на диске заканчивается, и поиск кода не работает в tfs.

После того, как мы увеличим место на диске, поиск снова заработает. Как мы можем настроить политику хранения для удаления старых данных поиска кода (индекса)? мы не хотим увеличивать больше места на диске.


person Shayki Abramczyk    schedule 30.05.2018    source источник
comment
Привет, Шайки Абрамчик, любые новости по этому делу. Помог ли мой ответ или дал правильное направление?   -  person PatrickLu-MSFT    schedule 06.06.2018
comment
Привет Патрик! спасибо за ваш ответ, это видна долгая процедура, и правда, мне не хватило, чтобы проверить это, так или иначе - я хочу сделать это сохранение автоматически, как вы думаете, это возможно?   -  person Shayki Abramczyk    schedule 06.06.2018


Ответы (2)


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

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

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

  • Приостановить индексирование для всех коллекций. Запустите следующий скрипт в базе данных конфигурации TFS https://github.com/Microsoft/Code-Search/blob/master/PauseIndexing.ps1
  • Войдите на компьютер, на котором работает Elasticsearch (ES).
  • Остановить службу ЕС
  • Удалите всю папку индекса поиска (например, 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

person PatrickLu-MSFT    schedule 31.05.2018

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

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

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

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

person Shayki Abramczyk    schedule 12.09.2018