Рассмотрите возможность удаления старых определений рабочей области TFS, оставшихся от сборок непрерывной интеграции.
У нас была такая же проблема с большим деревом проектов Team Foundation Server. Иногда, но не всегда, открытие решения в Visual Studio 2010 или Visual Studio 2012 зависало точно так, как описано выше. VS 2010 был наиболее уязвим; VS 2012 казался менее уязвимым, но все равно зависал.
Мы смогли получить некоторые подсказки, наблюдая за активностью сервера на машине TFS Server и базовой машине SQL Server. Определенная хранимая процедура запроса использовала чрезмерное количество процессорного времени в SQL Server. Мы связали это имя хранимой процедуры с операцией TFS, участвующей в сканировании определений рабочей области TFS для извлечения файлов другими пользователями.
Наша среда TFS используется уже более 3 лет, и мы используем определения сборки непрерывной интеграции, используя «армию зомби» рабочих станций разработчиков в качестве хостов агента сборки TFS. Мы также создаем новые ветки TFS для основных выпусков. Каждая ветвь содержит около 20 отдельных решений Visual Studio с собственными определениями сборки.
Со временем мы накопили около 2000 определений TFS Workspace на каждой рабочей станции разработчика. У нас было около 10 рабочих станций одновременно со своими определениями.
Используя окно команд Visual Studio и работая от имени администратора TFS, мы использовали эту команду для идентификации всех рабочих пространств, созданных нашим «пользователем сборки»:
tf workspaces /collection:tfservername\collectionname /owner:ourbuilduser ›c:\tf_ws_del.bat
Затем мы использовали глобальные подстановки и средство записи макросов редактора Notepad++, чтобы преобразовать каждую строку результата в следующую форму:
рабочая область tf /удалить /коллекция:tfservername\имя_коллекции имя_рабочей области;наш_пользователь_сборки ‹c:\yes.txt
где C:\yes.txt содержал одну строку "y"
Мы также использовали человеческое суждение, чтобы удалить строки удаления для рабочих областей, названных в честь нашей последней ветки TFS.
Затем мы запустили этот скрипт c:\tfs_ws_del.bat в том же командном окне Visual Studio и терпеливо дождались его завершения.
Конечный результат: наши решения Visual Studio открываются очень быстро. Даже просмотр иерархии папок в Source Control Explorer значительно ускорился.
ПРЕДУПРЕЖДЕНИЕ. Операции удаления для очень большого количества рабочих областей могут значительно расширить базу данных TempDB на базовом SQL Server. Координируйте свои действия с администраторами баз данных для мониторинга пространства на компьютере с SQL Server. Остановка и перезапуск коллекции TFS с помощью графического инструмента консоли администратора TFS помогает восстановить часть этого пространства TempDB и вернуть его во внутренний список «свободных блоков».
22.10.2013