Ik twijfel of dit topic hier het beste tot z'n recht komt of toch in PRG, maar toch maar hier.
Wij draaien al een aantal jaar met een klein ontwikkelteam op TFS Express (eerst 2012, daarna geupgrade naar 2015, nu 2017). Nu liepen we gisteren tegen het problem aan dat de database vol zat (10GB beperking van Sql Express). Op een of andere manier is er nu weer 250MB vrij dus we kunnen weer iets, maar het is geen comfortabele situatie. Ik ben dus een en ander aan het uitzoeken geweest om uit te zoeken waar dit dan in zit, en vond wat queries op internet die wat inzicht bieden.
Stap 1:
Ruim 6GB in de "FileContainer" dus.
En ruim 6GB met als owner "Build".
Nu zijn onze builds absoluut niet spannend, het zijn voornamelijk web projectjes en de retentie staat overal gewoon op de default settings van TFS.
Wat heb ik verder geprobeerd:
-Er stond 1 groot web project in TFS van rond de 3GB. Deze heb ik verwijderd met tf destroy /startcleanup. Ik had verwacht hierna meteen 3GB vrij te hebben, maar het leverde bijna niets op.
-Ik heb de volgende stored procedures uitgevoerd die TFS op zouden moeten ruimen:
Wederom geen enkel effect.
Mijn vragen:
-Heeft iemand een idee hoe ik nog kan inzoomen op de owner "Build", zodat ik bijvoorbeeld een overzicht heb per project?
-Waarom heb ik die 3GB niet terug gekregen?
-Hoe krijg ik TFS aan het opruimen?
Ik snap dat een TFS licentie dit ook op zou lossen, maar daar zijn we simpelweg te klein voor om dat rendabel te maken (en TFS Express zou met ons kleine team makkelijk moeten kunnen).
Wij draaien al een aantal jaar met een klein ontwikkelteam op TFS Express (eerst 2012, daarna geupgrade naar 2015, nu 2017). Nu liepen we gisteren tegen het problem aan dat de database vol zat (10GB beperking van Sql Express). Op een of andere manier is er nu weer 250MB vrij dus we kunnen weer iets, maar het is geen comfortabele situatie. Ik ben dus een en ander aan het uitzoeken geweest om uit te zoeken waar dit dan in zit, en vond wat queries op internet die wat inzicht bieden.
Stap 1:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| 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 |
code:
1
2
3
4
5
6
7
8
| Owner BlobSizeInMB FileContainer 6398.704974173828 VersionControl 1629.860169410156 TeamTest 128.986527442382 CodeSense 19.872520446289 ProcessTemplate 8.653362273437 Generic 7.758193015625 WorkItemTracking 2.085576056640 |
Ruim 6GB in de "FileContainer" dus.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| SELECT CASE WHEN Container = 'vstfs:///Buil' THEN 'Build' WHEN Container = 'vstfs:///Git/' THEN 'Git' WHEN Container = 'vstfs:///Dist' THEN 'DistributedTask' ELSE Container END AS FileContainerOwner, SUM(fm.CompressedLength) / 1024.0 / 1024.0 AS TotalSizeInMB FROM (SELECT DISTINCT LEFT(c.ArtifactUri, 13) AS Container, fr.ResourceId, ci.PartitionId FROM tbl_Container c 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 |
code:
1
2
3
4
| FileContainerOwner TotalSizeInMB Build 6355.591111182617 DistributedTask 21.820400237304 vstfs:///Rele 19.101548194335 |
En ruim 6GB met als owner "Build".
Nu zijn onze builds absoluut niet spannend, het zijn voornamelijk web projectjes en de retentie staat overal gewoon op de default settings van TFS.
Wat heb ik verder geprobeerd:
-Er stond 1 groot web project in TFS van rond de 3GB. Deze heb ik verwijderd met tf destroy /startcleanup. Ik had verwacht hierna meteen 3GB vrij te hebben, maar het leverde bijna niets op.
-Ik heb de volgende stored procedures uitgevoerd die TFS op zouden moeten ruimen:
SQL:
1
2
3
| exec prc_DeleteUnusedContent 1 exec prc_CleanupDeletedFileContent 1 exec prc_DeleteUnusedFiles 1, 0, 10000 |
Wederom geen enkel effect.
Mijn vragen:
-Heeft iemand een idee hoe ik nog kan inzoomen op de owner "Build", zodat ik bijvoorbeeld een overzicht heb per project?
-Waarom heb ik die 3GB niet terug gekregen?
-Hoe krijg ik TFS aan het opruimen?
Ik snap dat een TFS licentie dit ook op zou lossen, maar daar zijn we simpelweg te klein voor om dat rendabel te maken (en TFS Express zou met ons kleine team makkelijk moeten kunnen).