Как управлять размером кэша Version Control в TFS 2008
By: Date: 23.08.2011 Categories: !RUS,TFS Метки:

(В версии 2010 появились дополнительные параметры для управления размером кэша).

Немного предыстории. На сервера есть папка c:Program FilesMicrosoft Visual Studio 2008 Team Foundation ServerWeb ServicesVersionControlData которая может занимать достаточно много места на диске. Оказывается это кэш для Version Control из TFS, которое является web приложением.

У меня кэш занимает 7,5 Гб за примерно 4 года функционирования. Причем если покопаться в самой папке, то видно что там есть файлы прошлых лет. Я точно знаю что сейчас уже в работе другие проекты, т.е. скорее всего в старых файлах кэша лежат файлы из TFS которые уже не понадобятся (или понадобятся но оооочень редко когда). И как же уменьшить размер кэша?

Немного покопавшись, обнаружил несколько статей в тему (можно найти и больше):

1) Cамая простая – Как изменить размер кэша TFS для увеличения производительности (How To Change The Cache Size Of The TFS To Boost Performance).

2) В документации msdn статья – Как изменить настройки кэша для сервера приложений TFS (How to: Change Cache Settings for an Application-Tier Server). (Эта статья для версии VS 2008, есть и для других версий VS – могут быть различия)

3) Радикальный подход (удаление всего содержимого кэша) – Как удалить Version Control кэш на сервере приложений TFS (How to: Delete the Version Control Cache on the Application-tier Server). Внимание: После удаления потребуется пересоздание Team System Cube!

Как изменить настройки кэша Version Control для TFS

(краткое изложение статьи из п.2)

Все настройки хранятся в файле Web.config который по умолчанию находиться в c:Program FilesMicrosoft Visual Studio 2008 Team Foundation ServerWeb ServicesVersionControlWeb.config и для их изменения достаточно его отредактировать.

Перемещение папки кэша в другое место (другую папку или другой диск)

1. Создать новую папку для кэша (причем это может быть сетевой диск или даже UNC путь).

2. Дать группе TFS_APPTIER_SERVICE_WPG разрешение Read, Write на эту папку.

3. В файле Web.config найти в секции <appSettings> элемент <add key=»fileCacheRoot»>

4. Заменить в нём путь к папке кэша на новый

<add key=»fileCacheRoot» value=»Здесь новый путь к папке кэша» />

5. Сохранить файл Web.config.

6. Для повышения производительности рекомендуется скопировать содержимое старой папки кэша в новую.

7. Запустить iisreset  (Пуск – Выполнить).

8. Удалить старую папку кэша.

Изменение ограничений кэша для удаления файлов

Ограничение устанавливает количества места на диске, которое может использоваться для кэширования файлов. Когда ограничение достигнуто, старые файлы в кэше удаляются, чтобы освободить место для кэширования более новых файлов. Удаление основывается на времени доступа. Файлы, к которым не было доступа в течение самого долгого времени, удаляются первыми.

Ограничение можно задать в процентах или в фиксированном размере.

1. В файле Web.config найти секцию <appSettings>

2. В ней можно задать ключи:

CacheLimitPercent – Определяет количество процентов (%) всего доступного дискового пространства которое может быть заполнено кэшем.

Пример (Кэш может занимать 60% от всего объема диска, при превышении 60% начнется удаление более старых файлов):

<add key=»CacheLimitPercent» value=»60″ />

CacheLimit – Определяет фиксирований  размер в Мб доступный для кэша

Пример (Размер кэша не может быть более 500Мб)

<add key=»CacheLimit» value=»500″ />

Внимание: «CacheLimitPercent» and «CacheLimit» взаимоисключающие параметры и не могут работать одновременно, поэтому в Web.config лучше оставлять один из них.

3. Сохранить файл Web.config.

4. Запустить iisreset (Пуск – Выполнить).

При достижении любого ограничения из кэша удаляются более старые файлы. Ключ CacheDeletionPercent определяет в процентах (%) какое количество дискового места занятого кэшем следует при этом освободить.

Пример (При удалении будет освобождено 50% дискового места в кэше)

<add key=»CacheDeletionPercent» value=»50″ />

Изменение интервала записи статистик кэша в файл ProxyStatistics.xml

Несколько счетчиков производительности с определенной периодичностью записываются в файл ProxyStatistics.xml, который по умолчанию находиться в c:Program FilesMicrosoft Visual Studio 2008 Team Foundation ServerWeb ServicesVersionControlApp_DataProxyStatistics.xml.

Периодичность записи (в часах) задается ключом StatisticsPersistTime.

Пример (Писать каждые два часа)

<add key=»StatisticsPersistTime» value=»2″ />

Минимальный интервал 1 час, максимальный 24 часа.

Пример <appSettings> из реального Web.config

&lt;appSettings&gt;
        &lt;!-- File cache root folder--&gt;
        &lt;add key=&quot;fileCacheRoot&quot; value=&quot;c:Program FilesMicrosoft Visual Studio 2008 Team Foundation ServerWeb ServicesVersionControlData&quot; /&gt;

        &lt;!-- Cache limit expressed as percentage of disk space --&gt;
        &lt;!-- &lt;add key=&quot;CacheLimitPercent&quot; value=&quot;25&quot; /&gt;--&gt;

        &lt;!-- Cache limit expressed as MB --&gt;
        &lt;add key=&quot;CacheLimit&quot; value=&quot;2048&quot; /&gt;

        &lt;!-- Percentage of cache size that needs to be freed up, on hitting cache limit --&gt;
        &lt;add key=&quot;CacheDeletionPercent&quot; value=&quot;10&quot; /&gt;

    	&lt;!-- Indicates how often (number of hours) the proxy statistics information should be persisted to a file--&gt;
    	&lt;add key=&quot;StatisticsPersistTime&quot; value=&quot;24&quot; /&gt;
    &lt;/appSettings&gt;