суббота, 9 ноября 2013 г.

Обслуживание TFS

1. В первую очередь...
  • Применяйте все обновления безопасности. Используйте инструмент MBSA (http://go.microsoft.com/fwlink/?linkid=20567). Критические обновления безопасности должны применяться в течении 48 часов. 
  • Используйте последнюю версию TFS.
  • Используйте последнюю версию SQL.
  • Используйте последнюю версию ОС.
  • Используйте последние версии драйверов оборудования (особенно NIC и SAN/HBA драйвера).
2. Настройка ОС и регулярные задачи
  • Соберите все данные с базовых счётчиков производительности, чтобы выявить узкие места. В будущем это также послужит полезным инструментом диагностики. Необходимо собрать данные счётчиков в рабочий день в течении 24 часов с интервалом 1-5 мин. Не знаете какие счётчики собирать? Используйте инструмент PAL (http://pal.codeplex.com/) с шаблонами "System Overview" and "SQL Server".
  • Обеспечите антивирусные исключения для TFS, SQL и SharePoint (http://support.microsoft.com/kb/2636507
  • Обеспечите корректные правила для Firewall.
  • Убедитесь, что настроен полный дамп памяти (http://support.microsoft.com/kb/254649). При сбое это существенно повысит ваши шансы на исправление причины неполадки. Используйте NotMyFault.exe для создания дампа вручную (http://support.microsoft.com/kb/969028).
  • Не запускайте SQL и TFS под учётной записью локального администратора.
3. Настройка SQL
4. Регулярное обслуживание SQL
5. Настройка TFS
  • Иметь не меньше 2 App-tier (серверов приложений) в NLB. Это позволит вам использовать 2 job-агента для запуска фоновых заданий TFS, выполнять больше запросов/сек. Убедитесь, что NLB имеет TCP Idle timeout в 60 минут и все ваши клиенты используют последнюю версию. См. http://blogs.msdn.com/b/granth/archive/2013/02/13/tfs-load-balancers-idle-timeout-settings-and-tcp-keep-alives.aspx
  • Включите SQL Page Compression для таблиц кроме tbl_Content. Для включения используйте действия, обратные KB2712111.
  • Убедитесь, что включено секционирование таблиц для Version Control. Не рекомендуется, если у вас >1 млн. строк в tbl_LocalVersion. Обратитесь в службу поддержки MS т.к. это недокументированная возможность только для самых больших TFS instances (например, для DevDiv).
  • Проверьте, что SOAP gzip compression включена (http://blogs.msdn.com/b/granth/archive/2010/05/09/tfs2010-how-to-enable-compression-for-soap-traffic.aspx)
  • Отключить log-файлы IIS, чтобы они не заполнили диск: %windir%\system32\inetsrv\appcmd set config -section:system.webServer/httpLogging /dontLog:"True"  /commit:apphost
  • Изменить TFS App Pool Idle Timeouts с 20 до 0 минут (нет тайм-аута) и отключить scheduled recycling чтобы не было остановок в рабочие часы. 
  • Запустить TFS Proxy Server и убедиться, что сотрудники используют его (особенно build-сервер). Даже если не будет удалённых пользователей, это всеравно увеличит количество обрабатываемых запросов (request/sec) на App-tier. Сконфигурируйте его как прокси-сервер по умолчанию для сайта: tf proxy /add
  • При необходимости включить work item tracking metadata filtering.
  • Проверить корректность работы SMTP (SMTP settings). Наиболее распространённой проблемой здесь является ..
  • Установите NotificationJobLogLevel = 2 (http://blogs.msdn.com/b/granth/archive/2009/10/28/tfs2010-diagnosing-email-and-soap-subscription-failures.aspx) чтобы получать подробное сообщение об ошибке (например, используя TFS Best Practice Analyzer из TFS Power Tools)
  • Перенести кеш TFS на отдельный физический и/или логический диск. Как это сделать - http://msdn.microsoft.com/en-us/library/vstudio/ms400793.aspx. Во-первых, снизить нагрузку на систему ввода/вывода. Во-вторых, если вы восстановите базу данных на более ранний момент времени, вам необходимо будет очистить кеш TFS, иначе пользователям будет выдаваться неправильный контент. Если кеш TFS будет на отдельном диске, сделать это можно будет очень быстро. 
6. Регулярное обслуживание TFS
  • Проводите регулярные проверки с помощью TFS Best Practice Analyzer из пакета TFS Power Tools. Это поможет вам выявить проблемы, которые присутствуют на вашем сервере TFS.
  • Периодически просматривайте Activity Log и Job Monitoring в панели управления вашего сервера TFS - http://ServerName:8080/tfs/_oi/. В Activity Log вы можете просмотреть последние действия пользователей на сервере TFS. В Job Monitoring вы увидите успешно ли выполняются сервисные задания TFS-агента. 
  • Установите Performance Report Pack для просмотра пользователей, которые больше всех нагружают TFS. Также, анализируйте таблицу TFS-коллекции - tbl_Command.
  • Используйте Test Attachment Cleaner Tools (см. http://geekswithblogs.net/terje/archive/2011/11/15/guide-to-reduce-tfs-database-growth-using-the-test-attachment.aspx) для очистки таблицы tbl_Content.
  • Очищайте неиспользуемые workspaces и shelvesets. Используйте Team Foundation Sidekicks. Команда: tf workspace /delete.
  • Удаление полей, которые не используются (witadmin listfields /collection:http://tfs:8080/tfs/Collection /unused).
  • Проверяйте здоровье куба и warehouse с помощью Admin Report pack.
  • Проанализируйте поля со свойством reportingtype=’dimension’. Действительно ли они должны находится в кубе? Если нет, то поменяйте значение на 'detail' и при необходимости вызывайте их с помощью базы данных Tfs_Warehouse
  • Проанализируйте запросы на использование полей. Возможно, необходимо проиндексировать некоторые поля (witadmin indexfield /index:on) для увеличения быстродействия.
  • Проверьте tbl_EventSubscriptions на наличие невалидных получателей (email). Для удаления подписок используйте TFS Web Access "All Alerts" - http://yourserver:8080/tfs/YourCollection/YourProject/admin/_alerts
Первоисточник: http://blogs.msdn.com/b/granth/archive/2013/10/08/what-does-a-well-maintained-team-foundation-server-look-like.aspx