После обновления локальный сервер AzureDevops Server 2019 сохраняет 10-кратные данные сборки в dbo.tbl_content.
Мои локальные резервные копии Azure DevOps 2019 показывают неустойчивое увеличение размера файла.mdf
- query1 показывает, что это таблица "dbo.tbl_content"
- query2 показывает, что это "FileContainer" размером 112 ГБ.
- query3 показывает, что это pipelines://b на 93 ГБ.
- query4 показывает, что используемый размер увеличился с 1 ГБ в месяц до 10 ГБ в месяц. Это произошло в январе 2020 года, когда, возможно, случайно мы перешли с TFS18 на AzureDevOps19.
Итак, я считаю, что ищу строительную трубу (не выпускную трубу), которую нужно очистить? Исторически сложилось так, что мы пытались сохранить старые журналы сборки на 366 дней, но по нашим темпам мы этого не сделаем.
у нас есть около 40 конвейеров сборки (некоторые исторические, которые больше не работают), inc 4 запускается при фиксации (CI).
re: политика хранения...
- типичная политика хранения сборки CI. Срок хранения: 10 мин. Хранения: 1
- типичная политика хранения сборки RC. Срок хранения: 180 Мин. Хранения: 50
- from: DefaultCollection / Base / _settings / buildqueue... Максимальная политика хранения / Дни хранения: 183 Мин. хранения: 55 Политика хранения по умолчанию / Дней хранения: 15 мин. хранения: 1 Окончательно уничтожить сборки / Дней для сохранения записи сборки после удаление: 366 <- я уменьшил это вчера с 7000
Любая помощь приветствуется здесь, но в частности:
- Как я могу отследить конкретную сборку, которая вызывает проблему? и как это исправить?
- Есть ли какой-нибудь инструмент, который покажет мне, в чем заключаются проблемы. например, в TFS раньше был инструмент проверки работоспособности, но я его не вижу?
Благодарность,
query1
SELECT TOP 10 o.name,
SUM(reserved_page_count) * 8.0 / 1024 SizeInMB,
SUM(CASE
WHEN p.index_id <= 1 THEN p.row_count
ELSE 0
END) Row_Count
FROM sys.dm_db_partition_stats p
JOIN sys.objects o
ON p.object_id = o.object_id
GROUP BY o.name
ORDER BY SUM(reserved_page_count) DESC
query2
SELECT Owner =
CASE
WHEN OwnerId = 0 THEN 'Generic'
WHEN OwnerId = 1 THEN 'VersionControl'
WHEN OwnerId = 2 THEN 'WorkItemTracking'
WHEN OwnerId = 3 THEN 'TeamBuild'
WHEN OwnerId = 4 THEN 'TeamTest'
WHEN OwnerId = 5 THEN 'Servicing'
WHEN OwnerId = 6 THEN 'UnitTest'
WHEN OwnerId = 7 THEN 'WebAccess'
WHEN OwnerId = 8 THEN 'ProcessTemplate'
WHEN OwnerId = 9 THEN 'StrongBox'
WHEN OwnerId = 10 THEN 'FileContainer'
WHEN OwnerId = 11 THEN 'CodeSense'
WHEN OwnerId = 12 THEN 'Profile'
WHEN OwnerId = 13 THEN 'Aad'
WHEN OwnerId = 14 THEN 'Gallery'
WHEN OwnerId = 15 THEN 'BlobStore'
WHEN OwnerId = 255 THEN 'PendingDeletion'
END,
SUM(CompressedLength) / 1024.0 / 1024.0 AS BlobSizeInMB
FROM tbl_FileReference AS r
JOIN tbl_FileMetadata AS m
ON r.ResourceId = m.ResourceId
AND r.PartitionId = m.PartitionId
WHERE r.PartitionId = 1
GROUP BY OwnerId
ORDER BY 2 DESC
query3
SELECT CASE
WHEN Container = 'vstfs:///Buil' THEN 'Build'
WHEN Container = 'vstfs:///Git/' THEN 'Git'
WHEN Container = 'vstfs:///Dist' THEN 'DistributedTask'
WHEN Container = 'vstfs:///Rele' THEN 'Release'
ELSE Container
END AS FileContainerOwner,
SUM(fm.CompressedLength) / 1024 / 1024 AS TotalSizeInMB
FROM (SELECT DISTINCT LEFT(c.ArtifactUri, 13) AS Container,
fr.ResourceId,
ci.PartitionId
FROM tbl_Container c with (nolock)
INNER JOIN tbl_ContainerItem ci
ON c.ContainerId = ci.ContainerId
AND c.PartitionId = ci.PartitionId
INNER JOIN tbl_FileReference fr
ON ci.fileId = fr.fileId
AND ci.DataspaceId = fr.DataspaceId
AND ci.PartitionId = fr.PartitionId) c
INNER JOIN tbl_FileMetadata fm
ON fm.ResourceId = c.ResourceId
AND fm.PartitionId = c.PartitionId
GROUP BY c.Container
ORDER BY TotalSizeInMB DESC
query4
Select DATEPART(yyyy, CreationDate) as [year],
DATEPART(mm, CreationDate) as [month],
SUM(DATALENGTH(Content)) / 1048576 as [Size in Mb]
From tbl_Content With (nolock)
Group by DATEPART(yyyy, CreationDate),
DATEPART(mm, CreationDate)
Order by DATEPART(yyyy, CreationDate),
DATEPART(mm, CreationDate)
Связанный вопрос: TFS2015 tbl_Content увеличение
1 ответ
Вы можете попробовать выполнить запрос ниже, чтобы сузить дату:
SELECT ci.ContainerId,
c.ArtifactUri,
c.Name,
c.DateCreated,
SUM(fm.FileLength)
FROM tbl_ContainerItem ci
JOIN tbl_FileReference f
ON f.FileId = ci.FileId
JOIN tbl_FileMetadata fm
ON fm.PartitionId = 1
AND fm.ResourceId = f.ResourceId
LEFT JOIN tbl_Container c
ON c.ContainerId = ci.ContainerId
AND c.PartitionId = 1
WHERE f.PartitionId = 1
AND ci.PartitionId = 1
GROUP BY ci.ContainerId, c.ArtifactUri, c.Name, c.DateCreated
И поскольку это связано со сборкой, пожалуйста, проверьте, не вызвал ли это отчет об испытаниях. Вы можете указать подробные действия в этом потоке: База данных TFS становится слишком большой
Кроме того, вы также можете попробовать сжать журнал транзакций в базе данных TFS/Azure DevOps.