среда, 18 декабря 2013 г.

Разрастание кэша TFS на сервере

У вас на сервере TFS могут возникать проблемы с местом из-за разрастания кэша TFS, который хранится в папке:
  • TFS 2012 - C:\Program Files\Microsoft Team Foundation Server 11.0\Application Tier\Web Services\_tfs_data
  • TFS 2013 - C:\Program Files\Microsoft Team Foundation Server 12.0\Application Tier\Web Services\_tfs_data
Для того, чтобы кэш не разрастался больше фиксированного объёма, необходимо сконфигурировать файл web.config (для TFS 2013 находится в папке C:\Program Files\Microsoft Team Foundation Server 12.0\Application Tier\Web Services).

Внесите в раздел <appSettings> элемент:
 <add key="FixedSizeBasedPolicy" value="NNN" /> 
где NNN - количество мегабайт, больше которого кэш не должен разрастаться.

Например, если вы хотите, чтобы кэш не разрастался более 500 Мб, у вас должно быть:
...
<appSettings>
...
 <add key="FixedSizeBasedPolicy" value="500" /> 
...
</appSettings>


вторник, 19 ноября 2013 г.

Оповещение о создании/удалении баз данных на MS SQL Server

USE master;
GO

CREATE TRIGGER [os_Trigger_Notification_CreateDrop_Database
ON ALL SERVER FOR CREATE_DATABASE, DROP_DATABASE 
AS 
declare @results varchar(max)
declare @subjectText varchar(max)
declare @subjectBegin varchar(255) 
declare @databaseName VARCHAR(255)
BEGIN
SET NOCOUNT ON;
SET @results = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)'))
SET @databaseName = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]', 'VARCHAR(255)'))
SET @subjectBegin = 'Создана'
IF (LEFT(@results,4) = 'DROP') SET @subjectBegin = 'Удалена'
SET @subjectText = @subjectBegin + ' база данных на сервере ' + @@SERVERNAME + ' пользователем ' + SUSER_SNAME() 

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'MailProfile',
@recipients = 'user@example.ru',
@body = @results,
@subject = @subjectText;

END


Для удаления триггера используйте:
DROP TRIGGER [os_Trigger_Notification_CreateDrop_Database] ON ALL SERVER; 
GO


понедельник, 18 ноября 2013 г.

TFS Planning Guide

Обязательный к прочтению для администратора TFS: http://vsarplanningguide.codeplex.com/

среда, 13 ноября 2013 г.

Перенос базы TempDB в новое место

USE master
ALTER DATABASE tempdb MODIFY FILE(Name = tempdb, Filename = N'C:\NewFolder\tempdb.mdf')
GO

ALTER DATABASE tempdb MODIFY FILE(Name = templog, Filename = N'C:\NewFolder\templog.ldf')
GO

Если необходимо добавить файлы данных для базы TempDB (учитывая рекомендации в соответствии с количеством процессоров):

ALTER DATABASE tempdb
ADD FILE (NAME = tempdev2, FILENAME = 'C:\NewFolder\tempdb2.mdf', SIZE = 256);
ALTER DATABASE tempdb
ADD FILE (NAME = tempdev3, FILENAME = 'C:\NewFolder\tempdb3.mdf', SIZE = 256);
ALTER DATABASE tempdb
ADD FILE (NAME = tempdev4, FILENAME = 'C:\NewFolder\tempdb4.mdf', SIZE = 256);
GO

вторник, 12 ноября 2013 г.

HammerDB - оценка производительности SQL-сервера

HammerDB (бывший Hammerora) - бесплатный инструмент, позволяет проводить TPC-подобные тесты (TPC-C и TPC-H) различных СУБД: Oracle, Microsoft SQL Server, PostgreSQL, Greenplum, MySQL и Redis.



воскресенье, 10 ноября 2013 г.

Сценарий восстановления базы данных с помощью параметра REPAIR_ALLOW_DATA_LOSS

ps: перед использованием обязательно проконсультироваться с врачом прочитать MSDN.
ps2: не рекомендую использовать это в боевой системе без соответствующих знаний, чтобы не нанести вред.

USE [ИмяБазыДанных]

-- 1 шаг. Проверка базы на ошибки

DBCC CHECKDB([ИмяБазыДанных])

-- 2 шаг. Перевод базы в монопольный режим

ALTER DATABASE [ИмяБазыДанных] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

-- 3 шаг. Перевод базы в аварийных режим

ALTER DATABASE [ИмяБазыДанных] SET emergency

-- 4 шаг. Восстановление базы

DBCC CHECKDB([ИмяБазыДанных], REPAIR_ALLOW_DATA_LOSS)

-- 5 шаг

ALTER DATABASE [ИмяБазыДанных] SET multi_user

суббота, 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

вторник, 29 октября 2013 г.

Тест дисковой подсистемы SQL-сервера с помощью SQLIO

Дисковую подсистему сервера с СУБД SQL Server рекомендуется тестировать с помощью утилиты SQLIO (http://www.microsoft.com/en-us/download/details.aspx?id=20163).


понедельник, 28 октября 2013 г.

Тест процессора для SQL-сервера с помощью Geekbench

Для тестирования производительности процессора сервера с СУБД SQL Server рекомендуется использовать утилиту Geekbench (http://www.primatelabs.com/geekbench/).

Помимо количественных показателей различных тестов процессора утилита выдаёт общий балл производительности процессора.

В итоге, вы увидите следующую информацию..






Утилита также запускается и в консольном варианте.



пятница, 20 сентября 2013 г.

TFS 2012: Права доступа уровня проекта

Разрешения уровня проекта применяются к пользователям и группам отдельного проекта. Чтобы настроить эти разрешения, выберите проект в Team Explorer, выберите меню Параметры, а затем выберите Безопасность, либо откройте Team Web Access в режиме администрирования, перейдите к уровню проекта, а затем выберите вкладку Безопасность. Данные разрешения также можно настроить с помощью служебной программы командной строки TFSSecurity.





  • Создать запуск тестов (Create test runs)
  • Пользователи с данным разрешением могут добавлять и удалять результаты тестов, а также добавлять или изменять тестовые запуски для командного проекта.
    TFSSecurity: PUBLISH_TEST_RESULTS
  • Удалить проект (Delete team project)
  • Пользователи с данным разрешением могут удалять проект, для которого у них есть данное разрешение из Team Foundation Server.
    TFSSecurity: DELETE
  • Удалить запуск тестов (Delete test runs)
  • Пользователи, имеющие это разрешение, могут удалять запланированные тесты для данного командного проекта.
    TFSSecurity: DELETE_TEST_RESULTS
  • Редактировать информацию уровня проекта (Edit project-level information)
  • Пользователи с данным разрешением могут изменять разрешения на уровне проекта для пользователей и групп в Team Foundation Server.
    TFSSecurity: GENERIC_WRITE
  • Управление конфигурациями тестов (Manage test configurations)
  • Пользователи, имеющие это разрешение, могут создавать и удалять конфигурации тестов для данного командного проекта.
    TFSSecurity: MANAGE_TEST_CONFIGURATIONS
  • Управление тестовой средой (Manage test environments)
  • Пользователи, имеющие это разрешение, могут создавать и удалять тестовые среды для данного командного проекта.
    TFSSecurity: MANAGE_TEST_ENVIRONMENTS
  • Просмотр информации уровня проекта (View project-level information)
  • Пользователи с данным разрешением могут просматривать участников групп уровня проекта, а также разрешения данных пользователей проекта.
    TFSSecurity: GENERIC_READ
  • Просмотр запусков тестов (View test runs)
  • Обладающие этим разрешением пользователи могут просматривать планы тестирования в этом узле.
    TFSSecurity: VIEW_TEST_RESULTS