Slow Startup - Can you diagnose why this is taking forever to load the first time (1 minute+)

Slow Startup - Can you diagnose why this is taking forever to load the first time (1 minute+)

avatar

Main thread (UI)
Here Here is my /Profiler log:Here is my /Profiler log:Main thread (UI)Main thread (UI)Main thread (UI)

All Comments (15)

avatar

It's unfortunate that we don't see







Main thread (UI)
----------------------------------------
vRefreshConnections...
LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit...
OfflineManager.GetDataSourceSettings : 2 ms
Engine.Clear - DisposeInternalList : 0 ms
HasSecurityChanged...
ConnectionManager.RefreshDataSourceSettings...
GetDataSourceSettings : 31 ms
ConnectionManager.RefreshDataSourceSettings : 31 ms
HasSecurityChanged : 64 ms
Reload: True - HasSecurityChanged: True - HasChanged: True
Engine.Clear - DisposeInternalList - ClearRoot : 0 ms
LoadConnectionsFromDataSource...
GetDataSourceSettings : 29 ms
GetConnections...
Database.GetConnections...
ReadConnections...
Reading connections from database : 23 ms - Run count : 0 - Count : 134
ReadConnections : 57 ms
DecryptAndDeserializeConnections...
DecryptData : 0 ms - Count : 134
DeserializeData : 4 ms - Count : 134
DecryptAndDeserializeConnections : 5 ms
Database.GetConnections : 62 ms
GetConnections : 62 ms
DoMergeConnections - ReadOnly : 2 ms
LoadConnectionsFromDataSource : 442 ms
Load connection overrides...
Has changes : 35 ms
Load connection overrides : 35 ms
LoadConnections [Microsoft SQL Server : torched - Global Vault] - ReadOnly - 64-bit : 66 ms
FavoriteManager.LoadFolders : 30 ms
LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit : 930 ms
RefreshConnections : 930 ms
Connection States: Refresh...
GetOpenedConnections...
Opened - by process...
PowerShell (Local) : 9 ms
Opened - by process : 17 ms
GetOpenedConnections : 18 ms
Connection States: Refresh : 86 ms
TreeView.LoadConnectionList...
BeginUpdate...
LoadConnectionInTreeNode : 1 ms
PreCreateGroups : 0 ms - Run count : 1
BeginUpdate : 3 ms
TreeView.LoadConnectionList : 3 ms
Load Expand States...
Expanded: 5 - Nodes : 134
Nodes...
Expand : 0 ms - Run count : 1
Collapse : 0 ms - Run count : 13
Nodes : 0 ms
Load Expand States : 0 ms
RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load...
Set DocumentText : 31 ms
RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load : 469 ms
SelectionChanged - Default...
RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load : 479 ms
SelectionChanged - Default : 491 ms
LoadConnectionsFromOfflineFile...
DeserializeData : 0 ms - Count : 1
ReadFromOffline : 1 ms
LoadConnectionsFromOfflineFile : 1 ms
PrivateConnectionManager.Refresh...
LoadConnections [Microsoft SQL Server : torched - User Vault] - ReadOnly - 64-bit : 2148 ms
PrivateConnectionManager.Refresh : 2225 ms
RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load : 175 ms

Thread : 7
----------------------------------------
7 - OfflineManager.SaveMeta...
7 - SaveSecurityInfo...
7 - 760efb88-7f69-4dd7-ace8-596309d67de2
7 - SaveSecurityInfo : 335 ms
7 - Repository : 2 ms
7 - Expiration : 13 ms
7 - DataSourceSettings : 13 ms
7 - OfflineManager.SaveMeta : 365 ms
7 - Connection States: Refresh...
7 - GetOpenedConnections...
7 - Opened - by process : 8 ms
7 - GetOpenedConnections : 8 ms
7 - Connection States: Refresh : 84 ms
7 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 430 ms
7 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 255 ms
7 - Connection States: Refresh...
7 - GetOpenedConnections...
7 - Opened - by process : 5 ms
7 - GetOpenedConnections : 5 ms
7 - Connection States: Refresh : 62 ms
7 - Connection States: Refresh...
7 - GetOpenedConnections...
7 - Opened - by process...
7 - PowerShell (Local) : 7 ms
7 - Opened - by process : 14 ms
7 - GetOpenedConnections : 14 ms
7 - Connection States: Refresh : 124 ms
7 - Connection States: Refresh...
7 - GetOpenedConnections...
7 - Opened - by process : 4 ms
7 - GetOpenedConnections : 4 ms
7 - Connection States: Refresh : 59 ms

Thread : 11
----------------------------------------
11 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 328 ms
11 - Connection States: Refresh...
11 - GetOpenedConnections...
11 - Opened - by process...
11 - PowerShell (Local) : 15 ms
11 - Opened - by process : 21 ms
11 - GetOpenedConnections : 21 ms
11 - Connection States: Refresh : 156 ms
11 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 260 ms
11 - Connection States: Refresh...
11 - GetOpenedConnections...
11 - Opened - by process...
11 - Cisco ASDM : 1 ms
11 - Opened - by process : 8 ms
11 - GetOpenedConnections : 8 ms
11 - Connection States: Refresh : 67 ms

Thread : 12
----------------------------------------
12 - Sync to Offline : 13 ms - Count : 134
12 - Sync to Offline : 78 ms

Thread : 20
----------------------------------------
20 - OfflineManager.SaveMeta...
20 - SaveSecurityInfo...
20 - 760efb88-7f69-4dd7-ace8-596309d67de2
20 - SaveSecurityInfo : 464 ms
20 - Repository : 2 ms
20 - Expiration : 13 ms
20 - DataSourceSettings : 8 ms
20 - OfflineManager.SaveMeta : 488 ms
20 - Connection States: Refresh...
20 - GetOpenedConnections...
20 - Opened - by process : 19 ms
20 - GetOpenedConnections : 19 ms
20 - Connection States: Refresh : 80 ms
20 - OfflineManager.SaveMeta...
20 - Expiration : 13 ms
20 - OfflineManager.SaveMeta : 14 ms
20 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 245 ms

Thread : 21
----------------------------------------
21 - OfflineManager.SaveMeta...
21 - SaveSecurityInfo...
21 - 760efb88-7f69-4dd7-ace8-596309d67de2
21 - SaveSecurityInfo : 12 ms
21 - Repository : 2 ms
21 - Expiration : 14 ms
21 - DataSourceSettings : 11 ms
21 - OfflineManager.SaveMeta : 41 ms
21 - Connection States: Refresh...
21 - GetOpenedConnections...
21 - Opened - by process...
21 - SmartFTP : 1 ms
21 - Opened - by process : 6 ms
21 - GetOpenedConnections : 6 ms
21 - Connection States: Refresh : 88 ms
21 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 270 ms
21 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 378 ms
21 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 299 ms
21 - Connection States: Refresh...
21 - GetOpenedConnections...
21 - Opened - by process : 10 ms
21 - GetOpenedConnections : 10 ms
21 - Connection States: Refresh : 84 ms
21 - Connection States: Refresh...
21 - GetOpenedConnections...
21 - Opened - by process...
21 - PowerShell (Local) : 8 ms
21 - Opened - by process : 17 ms
21 - GetOpenedConnections : 17 ms
21 - Connection States: Refresh : 80 ms

Thread : 22
----------------------------------------
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 816 ms
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 311 ms
22 - Connection States: Refresh...
22 - GetOpenedConnections...
22 - Opened - by process : 5 ms
22 - GetOpenedConnections : 5 ms
22 - Connection States: Refresh : 61 ms
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 395 ms
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 390 ms
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 270 ms
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 192 ms

Thread : 23
----------------------------------------
23 - OfflineManager.SaveMeta...
23 - Expiration : 16 ms
23 - OfflineManager.SaveMeta : 16 ms
23 - Connection States: Refresh...
23 - GetOpenedConnections...
23 - Opened - by process...
23 - PowerShell (Local) : 20 ms
23 - Opened - by process : 28 ms
23 - GetOpenedConnections : 29 ms
23 - Connection States: Refresh : 96 ms
23 - Connection States: Refresh...
23 - GetOpenedConnections...
23 - Opened - by process...
23 - PowerShell (Local) : 23 ms
23 - Opened - by process : 31 ms
23 - GetOpenedConnections : 31 ms
23 - Connection States: Refresh : 90 ms

avatar

Thank you for your profile trace, a few observations.

But first, for the slow startup time, can you please go to Help > Diagnostic > Startup time, what do you see? This is the time it takes to "load" from the start of RDM to RDM ready to work. We are working at getting this number down see here.


As for the profiler output, we see that the shared, global & user vault were loaded, here are the load times.

LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit : 930 ms
LoadConnections [Microsoft SQL Server : torched - Global Vault] - ReadOnly - 64-bit : 66 ms
LoadConnections [Microsoft SQL Server : torched - User Vault] - ReadOnly - 64-bit : 2148 ms

The user vault is somewhat slow @ 2148ms.
Can you perform the same test but with /Profiler -2228227 and send us the profiler trace. The trace will be much more detailed, you can upload here or via private message if you like.


Other observations, we see the the overview is somewhat slow to load 200-800ms, I see 40-80ms here.

RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load : 479 ms
...
22 - RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 270 ms


Can you check to see that these 4 settings are checked? File > Settings > Advanced > ...


Best regards,

Stéfane Lavergne

a4826084-4a82-4897-84a3-53abf21fa043.png

avatar

I cannot find almost everything you told me... I don't see the Startup time option... and none of the 4 options neither.

But I don't have the latest version (I'm on 2023.3.31.0) and I just ask our IT and they will update later this year... apparently the database we use have to follow... I think I should have the latest version before we investigate further right?

Thanks for the quick response though.

avatar

My bad, yes, all these options are in the latest RDM, I'm not sure if any are in the 2023.3.31 version.

With 2023.3.31 /Profiler -2228227 won't work either. You could try /Profiler -3 and send me the result we might see something that could help you.

Yes, if you upgrade your RDM you will need to upgrade your database schema (RDM will do it for you) but it needs to be done by an admin user..

Best regards,

Stéfane Lavergne

avatar

Tell me that my slow start problems are fixed in the latest version though 😁 because that's the major issue we have now. We need to open the app first thing in the morning to deal with this.

It should keep the server list in cache somehow, and the app should open super-fast and update the servers list after the app refresh the cache in the background.

Thanks again

avatar

I still don't know what is slow, so no I can't guarantee things will be faster.

From the profiler trace you provided, it looks like your SQL Server is responding to the request relatively fast. The dashboard looks to be loading somewhat slow versus my setup, but other than that I have nothing to base an opinion on at this time.

If you want more analysis, I would need the other profiler trace (/Profiler -3) and maybe a video of the startup. How slow are we talking about? 5 second startup or 30 seconds?

You could also test with a local data source (XML or SQLite) with only a single entry set it to be the startup data source and see if RDM starts faster this way. This would eliminate SQL Server from the equation.

With RDM 2023.3.31, you could run the OptimizeRDM.ps1 (or was it OptimizeRDM.bat with this version). Run it as admin, this might improve startup times. Test with XML or SQLite data source and see.

You could also look here:
https://docs.devolutions.net/rdm/mac/kb/rdm-windows/troubleshooting-articles/startup-performance/#solution-2-slow-startup-on-offline-machines

Stéfane Lavergne

avatar

Here is the last log with the timestamp. I make a shortcut on my desktop to start the application quick with the /Profiler -3 options. I started Step Recorder just before. And also had to connect to my VPN first.

I double clicked the shortcut at 17:11:00! Weirdly enough there is nothing happening before 17:12:15 in your log!!! So if we rely on the log the issue is not that bad... but trust me and check Step Recorder log to see that I double clicked at 17:11.

By the way before testing, I always reboot my laptop. Because when I reopen the application it's quicker.

Main thread (UI)
----------------------------------------
17:12:15.709607 OfflineManager.GetDataSourceSettings...
17:12:15.709607 Initialize...
17:12:15.709607 OfflineManager.GetDataSourceSettings...
17:12:15.709607 Initialize : 75 ms
17:12:16.226201 OfflineManager.GetDataSourceSettings : 595 ms
17:12:16.233881 Initialize : 735 ms
17:12:16.236777 OfflineManager.GetDataSourceSettings : 738 ms
17:12:16.311607 LoadConnectionsFromOfflineFile...
17:12:16.311607 DeserializeData : 8 ms - Count : 134
17:12:16.311607 ReadFromOffline : 3 ms
17:12:16.311607 LoadConnectionsFromOfflineFile : 14 ms
17:12:17.305325 RefreshConnections...
17:12:17.305325 LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit...
17:12:17.305325 OfflineManager.GetDataSourceSettings : 3 ms
17:12:17.321954 Engine.Clear - DisposeInternalList...
17:12:17.321954 LoadConnectionsFromOfflineFile...
17:12:17.321954 DeserializeData : 1 ms - Count : 26
17:12:17.321954 ReadFromOffline : 2 ms
17:12:17.321954 LoadConnectionsFromOfflineFile : 5 ms
17:12:17.321954 Engine.Clear - DisposeInternalList : 16 ms
17:12:18.958658 HasSecurityChanged...
17:12:18.958658 --> SELECT IntelligentCacheID AS ConnectionCacheID FROM dbo.DatabaseInfo; : 1163 ms
17:12:18.958658 HasSecurityChanged : 1635 ms
17:12:18.958658 Reload: True - HasSecurityChanged: False - HasChanged: True
17:12:19.407588 --> SELECT SUSER_NAME() : 32 ms
17:12:19.767160 --> SELECT ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, a.*, s.*, p.*, p.ID AS 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = 0
AND (UPPER(s.Name) = UPPER(@Name) OR UPPER(s.Name) = UPPER(@Alias));

SELECT g.UserInfoID, g.GroupInfoID
FROM dbo.UserGroupInfo g
INNER JOIN dbo.UserSecurity s ON g.UserInfoID = s.ID
WHERE s.UserType = 0
AND (UPPER(s.Name) = UPPER(@Name) OR UPPER(s.Name) = UPPER(@Alias)); : 189 ms
17:12:19.822600 OfflineManager.LoadConnections...
17:12:19.822600 --> SELECT * FROM dbo.Repository; : 30 ms
17:12:20.393239 OfflineManager.LoadConnections : 610 ms
17:12:20.716915 LoadConnectionsFromDataSource...
17:12:20.716915 -->
DECLARE @VERSION int;

IF NOT EXISTS (select * FROM dbo.sysobjects where id = object_id(N'dbo.DatabaseInfo'))
SELECT @VERSION = 0
ELSE
SELECT @VERSION = DatabaseVersion FROM dbo.DatabaseInfo

SELECT @VERSION
: 25 ms
17:12:20.752051 GetDataSourceSettings...
17:12:20.752051 --> SELECT * FROM dbo.DatabaseInfo : 27 ms
17:12:20.754045 GetDataSourceSettings : 29 ms
17:12:21.205103 -->
SELECT

CASE WHEN uv.RepositoryID IS NULL THEN 0 ELSE 1 END AS HasUserVault,
case when a.ConnectionOverrides is null then null else '[VALUE]' end as ConnectionOverrides,
case when a.ConnectionOverridesSafe is null then null else '[VALUE]' end as ConnectionOverridesSafe,
case when a.PersonalConnections is null then null else '[VALUE]' end as PersonalConnections,
a.ID, a.FullName, a.IsTemplate, a.Email, a.IsOwner, a.Data, a.SecurityKey, a.ResetTwoFactor, a.PasswordFormat, a.UserMustChangePasswordAtNextLogon, a.UserSettings,
s.Name, s.UserType, s.IsAdministrator, s.IsEnabled, s.IsLockedOut, s.Departments, s.SecurityKey, s.AccountSettings, s.CanAdd, s.CanDelete, s.CanEdit, s.CustomSecurity, s.CanAddCredentials, s.CanAddDataEntry, s.CanEditCredentials, s.CanEditDataEntry, s.CanDeleteCredentials, s.CanDeleteDataEntry, s.UPN, s.AuthenticationType, s.LoginEmail, s.Repositories, s.HasAccessRDM, s.HasAccessPVM, s.HasAccessWeb, s.HasAccessWebLogin, s.HasAccessLauncher, s.UserLicenceTypeMode, s.HasUserVaultAccess,
p.FirstName, p.LastName, p.CompanyName, p.Phone, p.Fax, p.State, p.Address, p.CountryCode, p.CountryName, p.GravatarEmail, p.SubscribeToNewsletter, p.UserID, p.Workphone, p.CellPhone, p.JobTitle, p.Department, p.Serial, p.Culture, ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, s.Assigned,
p.ID as 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN (SELECT DISTINCT RepositoryID FROM dbo.Connections) uv ON uv.RepositoryID = s.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = @UserType AND (s.AuthenticationType IS NULL OR s.AuthenticationType != @AuthenticationType); : 114 ms
17:12:21.361979 -->
SELECT

CASE WHEN uv.RepositoryID IS NULL THEN 0 ELSE 1 END AS HasUserVault,
case when a.ConnectionOverrides is null then null else '[VALUE]' end as ConnectionOverrides,
case when a.ConnectionOverridesSafe is null then null else '[VALUE]' end as ConnectionOverridesSafe,
case when a.PersonalConnections is null then null else '[VALUE]' end as PersonalConnections,
a.ID, a.FullName, a.IsTemplate, a.Email, a.IsOwner, a.Data, a.SecurityKey, a.ResetTwoFactor, a.PasswordFormat, a.UserMustChangePasswordAtNextLogon, a.UserSettings,
s.Name, s.UserType, s.IsAdministrator, s.IsEnabled, s.IsLockedOut, s.Departments, s.SecurityKey, s.AccountSettings, s.CanAdd, s.CanDelete, s.CanEdit, s.CustomSecurity, s.CanAddCredentials, s.CanAddDataEntry, s.CanEditCredentials, s.CanEditDataEntry, s.CanDeleteCredentials, s.CanDeleteDataEntry, s.UPN, s.AuthenticationType, s.LoginEmail, s.Repositories, s.HasAccessRDM, s.HasAccessPVM, s.HasAccessWeb, s.HasAccessWebLogin, s.HasAccessLauncher, s.UserLicenceTypeMode, s.HasUserVaultAccess,
p.FirstName, p.LastName, p.CompanyName, p.Phone, p.Fax, p.State, p.Address, p.CountryCode, p.CountryName, p.GravatarEmail, p.SubscribeToNewsletter, p.UserID, p.Workphone, p.CellPhone, p.JobTitle, p.Department, p.Serial, p.Culture, ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, s.Assigned,
p.ID as 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN (SELECT DISTINCT RepositoryID FROM dbo.Connections) uv ON uv.RepositoryID = s.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = @UserType AND (s.AuthenticationType IS NULL OR s.AuthenticationType != @AuthenticationType); : 41 ms
17:12:21.421192 --> SELECT * FROM dbo.Repository; : 27 ms
17:12:21.593588 GetConnections...
17:12:21.593588 Database.GetConnections...
17:12:21.593588 ReadConnections...
17:12:21.593588 --> [SQL]...
17:12:21.593588 Reading connections from database : 0 ms - Run count : 0
17:12:21.596226 --> SELECT c.ID, c.Data, c.ConnectionType, c.RepositoryID, c.AttachmentCount, c.AttachmentPrivateCount, c.TodoOpenCount, c.HandbookCount FROM dbo.Connections c WHERE c.RepositoryID = @RepositoryID AND c.Version > @Version;SELECT ch.ConnectionID as ID, ch.ConnectionType, ch.GroupName, ch.RepositoryID FROM dbo.ConnectionHistory ch WHERE ch.Version > @VersionDeleted AND ((ch.HistoryType = 'D' AND ch.RepositoryID = @RepositoryID) OR (ch.HistoryType = 'M' AND ch.RepositoryID <> @RepositoryID));select max(Version), @@DBTS from (
select max(c.Version) as Version from dbo.Connections c where RepositoryID = @RepositoryID
union all
select max(c.Version) as Version from dbo.ConnectionHistory c where RepositoryID = @RepositoryID
union all
select max(c.Version) as Version from dbo.ConnectionHistory c where RepositoryID = @RepositoryID and HistoryType = 'M'
) a;SELECT ID, Name, ImageBytes, ImageName, IsAllowedOffline, RepositorySettings FROM dbo.Repository WHERE ID = @RepositoryID;
@RepositoryID:ee6dc46f-75f0-47df-aaad-a8dba03f3092
@Version:0x000000000018060A
@VersionDeleted:0x000000000018060A : 29 ms
17:12:21.596226 ReadConnections : 33 ms
17:12:21.621893 --> SELECT Value FROM dbo.AppSettings WHERE Name='EncryptData' : 25 ms
17:12:21.622891 Database.GetConnections : 60 ms
17:12:21.622891 GetConnections : 60 ms
17:12:21.622891 LoadConnectionsFromDataSource : 1224 ms
17:12:21.649289 Load connection overrides...
17:12:21.649289 Has changes...
17:12:21.649289 --> SELECT ConnectionOverridesCacheID FROM dbo.UserAccount WHERE ID = ? : 26 ms
17:12:21.649289 Has changes : 26 ms
17:12:21.649289 Load connection overrides : 26 ms
17:12:22.285279 OfflineManager.LoadConnections : 635 ms
17:12:22.688258 LoadConnections [Microsoft SQL Server : torched - Global Vault] - ReadOnly - 64-bit : 402 ms
17:12:22.716993 --> SELECT * FROM dbo.Repository; : 28 ms
17:12:22.788285 FavoriteManager.LoadFolders...
17:12:22.788285 --> SELECT Setting FROM dbo.UserRoamingSettings WHERE UserID = ? AND SettingType = ? AND CacheID != ? : 25 ms
17:12:22.788285 FavoriteManager.LoadFolders : 35 ms
17:12:22.823082 --> SELECT * FROM dbo.DashboardLayout WHERE ID = ? : 34 ms
17:12:22.826102 LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit : 5523 ms
17:12:24.371560 RefreshConnections : 7068 ms
17:12:24.401736 Connection States: Refresh...
17:12:24.401736 --> delete from dbo.ConnectionState where ExpirationDate < GETUTCDATE() or CreationDate < dateadd(day, -30, GETUTCDATE()); : 29 ms
17:12:24.430553 --> select ConnectionID, UserID, State, ExpirationDate, MachineName
from dbo.ConnectionState
where RepositoryID = ?
order by ID : 29 ms
17:12:24.454860 Connection States: Refresh : 91 ms
17:12:24.475096 TreeView.LoadConnectionList...
17:12:24.475096 BeginUpdate...
17:12:24.475096 LoadConnectionInTreeNode : 6 ms
17:12:24.475096 PreCreateGroups : 1 ms - Run count : 1
17:12:24.475096 BeginUpdate : 10 ms
17:12:24.475096 TreeView.LoadConnectionList : 12 ms
17:12:24.475096 Load Expand States...
17:12:24.475096 Expanded: 5 - Nodes : 134
17:12:24.475096 Nodes...
17:12:24.475096 Expand : 0 ms - Run count : 0
17:12:24.475096 Collapse : 0 ms - Run count : 13
17:12:24.475096 Nodes : 0 ms
17:12:24.475096 Load Expand States : 0 ms
17:12:26.749091 SelectionChanged - Default : 2 ms
17:12:27.288072 RefreshConnections...
17:12:27.288072 LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit...
17:12:27.288072 OfflineManager.GetDataSourceSettings : 2 ms
17:12:27.288072 Engine.Clear - DisposeInternalList : 0 ms
17:12:27.325289 HasSecurityChanged...
17:12:27.326288 --> SELECT IntelligentCacheID AS ConnectionCacheID FROM dbo.DatabaseInfo; : 37 ms
17:12:27.362066 ConnectionManager.RefreshDataSourceSettings...
17:12:27.362066 GetDataSourceSettings...
17:12:27.362066 --> SELECT * FROM dbo.DatabaseInfo : 36 ms
17:12:27.364061 GetDataSourceSettings : 38 ms
17:12:27.364061 ConnectionManager.RefreshDataSourceSettings : 38 ms
17:12:27.365060 HasSecurityChanged : 76 ms
17:12:27.365060 Reload: True - HasSecurityChanged: True - HasChanged: True
17:12:27.556121 Engine.Clear - DisposeInternalList - ClearRoot : 0 ms
17:12:27.591277 LoadConnectionsFromDataSource...
17:12:27.591277 GetDataSourceSettings...
17:12:27.591277 --> SELECT * FROM dbo.DatabaseInfo : 35 ms
17:12:27.594958 GetDataSourceSettings : 39 ms
17:12:27.634653 --> SELECT ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, a.*, s.*, p.*, p.ID AS 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = 0
AND (UPPER(s.Name) = UPPER(@Name) OR UPPER(s.Name) = UPPER(@Alias));

SELECT g.UserInfoID, g.GroupInfoID
FROM dbo.UserGroupInfo g
INNER JOIN dbo.UserSecurity s ON g.UserInfoID = s.ID
WHERE s.UserType = 0
AND (UPPER(s.Name) = UPPER(@Name) OR UPPER(s.Name) = UPPER(@Alias)); : 39 ms
17:12:27.704094 -->
SELECT

CASE WHEN uv.RepositoryID IS NULL THEN 0 ELSE 1 END AS HasUserVault,
case when a.ConnectionOverrides is null then null else '[VALUE]' end as ConnectionOverrides,
case when a.ConnectionOverridesSafe is null then null else '[VALUE]' end as ConnectionOverridesSafe,
case when a.PersonalConnections is null then null else '[VALUE]' end as PersonalConnections,
a.ID, a.FullName, a.IsTemplate, a.Email, a.IsOwner, a.Data, a.SecurityKey, a.ResetTwoFactor, a.PasswordFormat, a.UserMustChangePasswordAtNextLogon, a.UserSettings,
s.Name, s.UserType, s.IsAdministrator, s.IsEnabled, s.IsLockedOut, s.Departments, s.SecurityKey, s.AccountSettings, s.CanAdd, s.CanDelete, s.CanEdit, s.CustomSecurity, s.CanAddCredentials, s.CanAddDataEntry, s.CanEditCredentials, s.CanEditDataEntry, s.CanDeleteCredentials, s.CanDeleteDataEntry, s.UPN, s.AuthenticationType, s.LoginEmail, s.Repositories, s.HasAccessRDM, s.HasAccessPVM, s.HasAccessWeb, s.HasAccessWebLogin, s.HasAccessLauncher, s.UserLicenceTypeMode, s.HasUserVaultAccess,
p.FirstName, p.LastName, p.CompanyName, p.Phone, p.Fax, p.State, p.Address, p.CountryCode, p.CountryName, p.GravatarEmail, p.SubscribeToNewsletter, p.UserID, p.Workphone, p.CellPhone, p.JobTitle, p.Department, p.Serial, p.Culture, ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, s.Assigned,
p.ID as 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN (SELECT DISTINCT RepositoryID FROM dbo.Connections) uv ON uv.RepositoryID = s.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = @UserType AND (s.AuthenticationType IS NULL OR s.AuthenticationType != @AuthenticationType); : 63 ms
17:12:27.776965 --> SELECT * FROM dbo.Repository; : 47 ms
17:12:27.859467 --> SELECT * FROM dbo.Repository WHERE ID = @RepositoryID; : 45 ms
17:12:27.994260 GetConnections...
17:12:27.994260 Database.GetConnections...
17:12:27.994260 ReadConnections...
17:12:27.994260 --> [SQL]...
17:12:27.994260 Reading connections from database : 9 ms - Run count : 0 - Count : 134
17:12:27.994260 --> SELECT c.ID, c.Data, c.ConnectionType, c.RepositoryID, c.AttachmentCount, c.AttachmentPrivateCount, c.TodoOpenCount, c.HandbookCount FROM dbo.Connections c WHERE c.RepositoryID = @RepositoryID AND c.Version > @Version;SELECT ch.ConnectionID as ID, ch.ConnectionType, ch.GroupName, ch.RepositoryID FROM dbo.ConnectionHistory ch WHERE ch.Version > @VersionDeleted AND ((ch.HistoryType = 'D' AND ch.RepositoryID = @RepositoryID) OR (ch.HistoryType = 'M' AND ch.RepositoryID <> @RepositoryID));select max(Version), @@DBTS from (
select max(c.Version) as Version from dbo.Connections c where RepositoryID = @RepositoryID
union all
select max(c.Version) as Version from dbo.ConnectionHistory c where RepositoryID = @RepositoryID
union all
select max(c.Version) as Version from dbo.ConnectionHistory c where RepositoryID = @RepositoryID and HistoryType = 'M'
) a;SELECT ID, Name, ImageBytes, ImageName, IsAllowedOffline, RepositorySettings FROM dbo.Repository WHERE ID = @RepositoryID;
@RepositoryID:ee6dc46f-75f0-47df-aaad-a8dba03f3092
@Version:0x0000000000000000
@VersionDeleted:0xFFFFFFFFFFFFFFFF : 73 ms
17:12:27.994260 ReadConnections : 73 ms
17:12:27.995257 DecryptAndDeserializeConnections...
17:12:27.995257 DecryptData : 0 ms - Count : 134
17:12:27.997285 DeserializeData : 3 ms - Count : 134
17:12:27.997285 DecryptAndDeserializeConnections : 3 ms
17:12:27.997285 Database.GetConnections : 78 ms
17:12:27.997285 GetConnections : 78 ms
17:12:28.002819 DoMergeConnections - ReadOnly...
17:12:28.002819 Filter : 4 ms
17:12:28.002819 DoMergeConnections - ReadOnly : 6 ms
17:12:28.002819 LoadConnectionsFromDataSource : 448 ms
17:12:28.045845 Load connection overrides...
17:12:28.045845 Has changes...
17:12:28.045845 --> SELECT ConnectionOverridesCacheID FROM dbo.UserAccount WHERE ID = ? : 40 ms
17:12:28.045845 Has changes : 41 ms
17:12:28.045845 Load connection overrides : 41 ms
17:12:28.134977 LoadConnections [Microsoft SQL Server : torched - Global Vault] - ReadOnly - 64-bit : 89 ms
17:12:28.182142 FavoriteManager.LoadFolders...
17:12:28.182142 --> SELECT Setting FROM dbo.UserRoamingSettings WHERE UserID = ? AND SettingType = ? AND CacheID != ? : 40 ms
17:12:28.182142 FavoriteManager.LoadFolders : 45 ms
17:12:28.246096 --> SELECT * FROM dbo.DashboardLayout WHERE ID = ? : 63 ms
17:12:28.248094 LoadConnections UI - [Microsoft SQL Server : torched] - ReadOnly - 64-bit : 962 ms
17:12:28.248094 RefreshConnections : 963 ms
17:12:28.264201 Connection States: Refresh...
17:12:28.264201 GetOpenedConnections...
17:12:28.264201 Opened - by process...
17:12:28.264201 PowerShell (Local) : 11 ms
17:12:28.270037 Opened - by process : 21 ms
17:12:28.270037 GetOpenedConnections : 21 ms
17:12:28.326374 --> delete from dbo.ConnectionState where ExpirationDate < GETUTCDATE() or CreationDate < dateadd(day, -30, GETUTCDATE()); : 54 ms
17:12:28.383051 --> select ConnectionID, UserID, State, ExpirationDate, MachineName
from dbo.ConnectionState
where RepositoryID = ?
order by ID : 56 ms
17:12:28.383051 Connection States: Refresh : 134 ms
17:12:28.389174 TreeView.LoadConnectionList...
17:12:28.389174 BeginUpdate...
17:12:28.389174 LoadConnectionInTreeNode : 2 ms
17:12:28.389174 PreCreateGroups : 0 ms - Run count : 1
17:12:28.389174 BeginUpdate : 4 ms
17:12:28.389174 TreeView.LoadConnectionList : 5 ms
17:12:28.389174 Load Expand States...
17:12:28.389174 Expanded: 5 - Nodes : 134
17:12:28.389174 Nodes...
17:12:28.389174 Expand : 0 ms - Run count : 1
17:12:28.389174 Collapse : 0 ms - Run count : 13
17:12:28.389174 Nodes : 0 ms
17:12:28.389174 Load Expand States : 0 ms
17:12:29.020217 RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load...
17:12:29.020217 Set DocumentText : 22 ms
17:12:29.020217 RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load : 584 ms
17:12:30.225363 SelectionChanged - Default...
17:12:30.225363 RootDashboardOverviewManager.LoadRootDashboardOverView - Quick Load : 452 ms
17:12:30.242552 SelectionChanged - Default : 470 ms

Thread : 7
----------------------------------------
7 - 17:12:27.642435 OfflineManager.SaveMeta...
7 - 17:12:27.642435 SaveSecurityInfo...
7 - 17:12:27.642435 --> SELECT ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, a.*, s.*, p.*, p.ID AS 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = 0
AND (UPPER(s.Name) = UPPER(@Name) OR UPPER(s.Name) = UPPER(@Alias));

SELECT g.UserInfoID, g.GroupInfoID
FROM dbo.UserGroupInfo g
INNER JOIN dbo.UserSecurity s ON g.UserInfoID = s.ID
WHERE s.UserType = 0
AND (UPPER(s.Name) = UPPER(@Name) OR UPPER(s.Name) = UPPER(@Alias)); : 47 ms
7 - 17:12:27.644429 760efb88-7f69-4dd7-ace8-596309d67de2
7 - 17:12:27.655776 SaveSecurityInfo : 60 ms
7 - 17:12:27.656775 Repository : 1 ms
7 - 17:12:27.668987 Expiration : 11 ms
7 - 17:12:27.676107 DataSourceSettings : 7 ms
7 - 17:12:27.677137 OfflineManager.SaveMeta : 84 ms
7 - 17:12:28.002819 OfflineManager.SaveMeta...
7 - 17:12:28.002819 SaveSecurityInfo...
7 - 17:12:28.002819 760efb88-7f69-4dd7-ace8-596309d67de2
7 - 17:12:28.014648 SaveSecurityInfo : 10 ms
7 - 17:12:28.016642 Repository : 1 ms
7 - 17:12:28.028164 Expiration : 11 ms
7 - 17:12:28.030161 DataSourceSettings : 7 ms
7 - 17:12:28.030161 OfflineManager.SaveMeta : 30 ms

Thread : 11
----------------------------------------
11 - 17:12:20.754045 OfflineManager.SaveMeta...
11 - 17:12:20.754045 SaveSecurityInfo...
11 - 17:12:20.754045 760efb88-7f69-4dd7-ace8-596309d67de2
11 - 17:12:20.833950 -->
SELECT

CASE WHEN uv.RepositoryID IS NULL THEN 0 ELSE 1 END AS HasUserVault,
case when a.ConnectionOverrides is null then null else '[VALUE]' end as ConnectionOverrides,
case when a.ConnectionOverridesSafe is null then null else '[VALUE]' end as ConnectionOverridesSafe,
case when a.PersonalConnections is null then null else '[VALUE]' end as PersonalConnections,
a.ID, a.FullName, a.IsTemplate, a.Email, a.IsOwner, a.Data, a.SecurityKey, a.ResetTwoFactor, a.PasswordFormat, a.UserMustChangePasswordAtNextLogon, a.UserSettings,
s.Name, s.UserType, s.IsAdministrator, s.IsEnabled, s.IsLockedOut, s.Departments, s.SecurityKey, s.AccountSettings, s.CanAdd, s.CanDelete, s.CanEdit, s.CustomSecurity, s.CanAddCredentials, s.CanAddDataEntry, s.CanEditCredentials, s.CanEditDataEntry, s.CanDeleteCredentials, s.CanDeleteDataEntry, s.UPN, s.AuthenticationType, s.LoginEmail, s.Repositories, s.HasAccessRDM, s.HasAccessPVM, s.HasAccessWeb, s.HasAccessWebLogin, s.HasAccessLauncher, s.UserLicenceTypeMode, s.HasUserVaultAccess,
p.FirstName, p.LastName, p.CompanyName, p.Phone, p.Fax, p.State, p.Address, p.CountryCode, p.CountryName, p.GravatarEmail, p.SubscribeToNewsletter, p.UserID, p.Workphone, p.CellPhone, p.JobTitle, p.Department, p.Serial, p.Culture, ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, s.Assigned,
p.ID as 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN (SELECT DISTINCT RepositoryID FROM dbo.Connections) uv ON uv.RepositoryID = s.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = @UserType AND (s.AuthenticationType IS NULL OR s.AuthenticationType != @AuthenticationType); : 79 ms
11 - 17:12:20.954723 SaveSecurityInfo : 200 ms
11 - 17:12:20.957736 Repository : 2 ms
11 - 17:12:21.110192 Expiration : 152 ms
11 - 17:12:21.127373 DataSourceSettings : 16 ms
11 - 17:12:21.128370 OfflineManager.SaveMeta : 374 ms
11 - 17:12:26.786875 --> SELECT * FROM dbo.ConnectionHandbook WHERE ConnectionID = ?; : 37 ms
11 - 17:14:29.494826 Connection States: Refresh...
11 - 17:14:29.494826 GetOpenedConnections...
11 - 17:14:29.494826 Opened - by process : 21 ms
11 - 17:14:29.494826 GetOpenedConnections : 21 ms
11 - 17:14:29.555800 --> delete from dbo.ConnectionState where ExpirationDate < GETUTCDATE() or CreationDate < dateadd(day, -30, GETUTCDATE()); : 60 ms
11 - 17:14:29.629967 --> select ConnectionID, UserID, State, ExpirationDate, MachineName
from dbo.ConnectionState
where RepositoryID = ?
order by ID : 73 ms
11 - 17:14:29.629967 Connection States: Refresh : 156 ms

Thread : 12
----------------------------------------
12 - 17:12:28.040067 Sync to Offline : 11 ms - Count : 134
12 - 17:12:28.135975 Sync to Offline : 73 ms

Thread : 14
----------------------------------------
14 - 17:12:21.622891 OfflineManager.SaveMeta...
14 - 17:12:21.622891 SaveSecurityInfo...
14 - 17:12:21.622891 760efb88-7f69-4dd7-ace8-596309d67de2
14 - 17:12:21.639307 SaveSecurityInfo : 15 ms
14 - 17:12:21.642235 Repository : 3 ms
14 - 17:12:21.664472 Expiration : 21 ms
14 - 17:12:21.682037 DataSourceSettings : 18 ms
14 - 17:12:21.683034 OfflineManager.SaveMeta : 59 ms
14 - 17:13:28.686619 RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load...
14 - 17:13:28.686619 --> SELECT a.*, c.Name AS ConnectionName, c.RepositoryID
FROM dbo.AccessRequest a
LEFT OUTER JOIN dbo.Connections c on a.ConnectionID = c.ID : 26 ms
14 - 17:13:28.712067 --> SELECT a.*, r.Name as VaultName FROM dbo.RepositoryAccessRequest a LEFT OUTER JOIN dbo.Repository r on a.RepositoryID = r.ID : 25 ms
14 - 17:13:28.746780 --> SELECT * FROM dbo.Todo WHERE
Status IN ( ?, ?, ?, ? )
: 35 ms
14 - 17:13:28.892675 RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 233 ms

Thread : 20
----------------------------------------
20 - 17:12:27.364061 OfflineManager.SaveMeta...
20 - 17:12:27.364061 SaveSecurityInfo...
20 - 17:12:27.364061 760efb88-7f69-4dd7-ace8-596309d67de2
20 - 17:12:27.556121 -->
SELECT

CASE WHEN uv.RepositoryID IS NULL THEN 0 ELSE 1 END AS HasUserVault,
case when a.ConnectionOverrides is null then null else '[VALUE]' end as ConnectionOverrides,
case when a.ConnectionOverridesSafe is null then null else '[VALUE]' end as ConnectionOverridesSafe,
case when a.PersonalConnections is null then null else '[VALUE]' end as PersonalConnections,
a.ID, a.FullName, a.IsTemplate, a.Email, a.IsOwner, a.Data, a.SecurityKey, a.ResetTwoFactor, a.PasswordFormat, a.UserMustChangePasswordAtNextLogon, a.UserSettings,
s.Name, s.UserType, s.IsAdministrator, s.IsEnabled, s.IsLockedOut, s.Departments, s.SecurityKey, s.AccountSettings, s.CanAdd, s.CanDelete, s.CanEdit, s.CustomSecurity, s.CanAddCredentials, s.CanAddDataEntry, s.CanEditCredentials, s.CanEditDataEntry, s.CanDeleteCredentials, s.CanDeleteDataEntry, s.UPN, s.AuthenticationType, s.LoginEmail, s.Repositories, s.HasAccessRDM, s.HasAccessPVM, s.HasAccessWeb, s.HasAccessWebLogin, s.HasAccessLauncher, s.UserLicenceTypeMode, s.HasUserVaultAccess,
p.FirstName, p.LastName, p.CompanyName, p.Phone, p.Fax, p.State, p.Address, p.CountryCode, p.CountryName, p.GravatarEmail, p.SubscribeToNewsletter, p.UserID, p.Workphone, p.CellPhone, p.JobTitle, p.Department, p.Serial, p.Culture, ISNULL(s.LinkedAccountID, s2.ID) AS LinkedAccountID, s.LinkedAccountID AS LinkedAccountIDRaw, s.Assigned,
p.ID as 'UserProfile.ID'
FROM dbo.UserAccount a
INNER JOIN dbo.UserSecurity s ON a.ID = s.ID
LEFT OUTER JOIN dbo.UserProfile p ON p.UserID = a.ID
LEFT OUTER JOIN (SELECT DISTINCT RepositoryID FROM dbo.Connections) uv ON uv.RepositoryID = s.ID
LEFT OUTER JOIN dbo.UserSecurity s2 ON s2.LinkedAccountID = s.ID
WHERE s.UserType = @UserType AND (s.AuthenticationType IS NULL OR s.AuthenticationType != @AuthenticationType); : 191 ms
20 - 17:12:27.618250 SaveSecurityInfo : 253 ms
20 - 17:12:27.620279 Repository : 2 ms
20 - 17:12:27.630665 Expiration : 11 ms
20 - 17:12:27.639458 DataSourceSettings : 8 ms
20 - 17:12:27.639458 OfflineManager.SaveMeta : 275 ms
20 - 17:14:28.702565 RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load...
20 - 17:14:28.702565 --> SELECT a.*, c.Name AS ConnectionName, c.RepositoryID
FROM dbo.AccessRequest a
LEFT OUTER JOIN dbo.Connections c on a.ConnectionID = c.ID : 45 ms
20 - 17:14:28.754492 --> SELECT a.*, r.Name as VaultName FROM dbo.RepositoryAccessRequest a LEFT OUTER JOIN dbo.Repository r on a.RepositoryID = r.ID : 51 ms
20 - 17:14:28.795137 --> SELECT * FROM dbo.Todo WHERE
Status IN ( ?, ?, ?, ? )
: 40 ms
20 - 17:14:29.229777 RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 572 ms

Thread : 23
----------------------------------------
23 - 17:12:29.064419 RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load...
23 - 17:12:29.064419 --> SELECT a.*, c.Name AS ConnectionName, c.RepositoryID
FROM dbo.AccessRequest a
LEFT OUTER JOIN dbo.Connections c on a.ConnectionID = c.ID : 43 ms
23 - 17:12:29.107103 --> SELECT a.*, r.Name as VaultName FROM dbo.RepositoryAccessRequest a LEFT OUTER JOIN dbo.Repository r on a.RepositoryID = r.ID : 41 ms
23 - 17:12:29.147173 --> SELECT * FROM dbo.Todo WHERE
Status IN ( ?, ?, ?, ? )
: 38 ms
23 - 17:12:29.575158 RootDashboardOverviewManager.LoadRootDashboardOverViewAsync - Full Load : 554 ms
23 - 17:13:29.345197 Connection States: Refresh...
23 - 17:13:29.345197 GetOpenedConnections...
23 - 17:13:29.345197 Opened - by process : 8 ms
23 - 17:13:29.345197 GetOpenedConnections : 8 ms
23 - 17:13:29.399741 --> delete from dbo.ConnectionState where ExpirationDate < GETUTCDATE() or CreationDate < dateadd(day, -30, GETUTCDATE()); : 47 ms
23 - 17:13:29.436355 --> select ConnectionID, UserID, State, ExpirationDate, MachineName
from dbo.ConnectionState
where RepositoryID = ?
order by ID : 36 ms
23 - 17:13:29.436355 Connection States: Refresh : 92 ms

RDM-SlowStart.zip

avatar
Here is the last log with the timestamp. I make a shortcut on my desktop to start the application quick with the /Profiler -3 options. I started Step Recorder just before. And also had to connect to my VPN first.

I double clicked the shortcut at 17:11:00! Weirdly enough there is nothing happening before 17:12:15 in your log!!! So if we rely on the log the issue is not that bad... but trust me and check Step Recorder log to see that I double clicked at 17:11.

By the way before testing, I always reboot my laptop. Because when I reopen the application it's quicker.


Ok, so your performance issue looks to be with .NET precompiling the RDM assemblies.

With RDM 2023.3.31, you should be able to run the OptimizeRDM.ps1 (or was it OptimizeRDM.bat with this version, I don't remember). You will find it in your install directory.

Run the file "as admin" and this should improve your startup times.

I will also have a quick look at your profiler trace.

Stéfane Lavergne

avatar

It doesn't look like an SQL Server (latency or other). Most queries return with 20-250 ms with one exception (the first query) took just over 1100 ms most likely due to the initial login handshake involved.

Stéfane Lavergne

avatar

It still took a minute to open RDM after I ran the OptimizeRDM.ps1. here is the log.

Hope the latest version fix my problem and if I hope you can optimize your application and also avoid having to manually run optimizer or anything to make the application faster. It's weird 🤨

I will be fine either way... I just open RDM first thing in the morning...

Thanks

Microsoft Windows [version 10.0.19045.4651]
(c) Microsoft Corporation. Tous droits réservés.

C:\WINDOWS\system32>cd C:\Program Files\Devolutions\Remote Desktop Manager

C:\Program Files\Devolutions\Remote Desktop Manager>OptimizeRDM.ps1

C:\Program Files\Devolutions\Remote Desktop Manager>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. Tous droits réservés.

Testez le nouveau système multiplateforme PowerShell https://aka.ms/pscore6

PS C:\Program Files\Devolutions\Remote Desktop Manager> .\OptimizeRDM.ps1
RDM Base Path: 'C:\Program Files\Devolutions\Remote Desktop Manager'
RDM Executable: 'C:\Program Files\Devolutions\Remote Desktop Manager\RemoteDesktopManager.exe'
Updating taskbar pinned shortcuts
Checking for taskbar pins in C:\Users\graveman\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\graveman\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\gravem... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\iwbmac2\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\iwbmac2\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\iwbmac... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\Administrator\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\Admini... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\transpassadmin\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\transpassadmin\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\transp... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\admbouchardm\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\admbouchardm\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\admbou... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\svc_tasky\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\svc_tasky\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\svc_ta... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\SVC_SEC_KB4\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\SVC_SEC_KB4\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\SVC_SE... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\AdmTranT\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\AdmTranT\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\AdmTra... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\svc_flow\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\svc_flow\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\svc_fl... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\svc_transpassadmin\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «
C:\Users\svc_transpassadmin\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar», car il
n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\svc_tr... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\spsintradmin\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\spsintradmin\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\spsint... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\admmoquinf\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Checking for taskbar pins in C:\Users\svc_o365_governance\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «
C:\Users\svc_o365_governance\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar», car il
n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\svc_o3... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\admblierr\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\admblierr\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\admbli... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Checking for taskbar pins in C:\Users\laflammm\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Updated the shortcut C:\Users\laflammm\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Remote Desktop Manager (RDM).lnk
Checking for taskbar pins in C:\Users\admlaflammm\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Checking for taskbar pins in C:\Users\okddkscu\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...
Get-ChildItem : Impossible de trouver le chemin d'accès «C:\Users\okddkscu\AppData\Roaming\Microsoft\Internet
Explorer\Quick Launch\User Pinned\TaskBar», car il n'existe pas.
Au caractère C:\Program Files\Devolutions\Remote Desktop Manager\OptimizeRDM.ps1:31 : 2
+ Get-ChildItem $TaskBarPath -Filter '*.lnk' | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\okddks... Pinned\TaskBar:String) [Get-ChildItem], ItemNotFound
Exception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Optimizing RemoteDesktopManager.exe
Optimizing Microsoft.AspNetCore.Hosting.Abstractions.dll
Optimizing Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
Optimizing Microsoft.AspNetCore.Http.Abstractions.dll
Optimizing Microsoft.AspNetCore.Http.Extensions.dll
Optimizing Microsoft.AspNetCore.Http.Features.dll
Optimizing Microsoft.AspNetCore.StaticFiles.dll
Optimizing Microsoft.Bcl.AsyncInterfaces.dll
Optimizing Microsoft.Bcl.HashCode.dll
Optimizing Microsoft.CodeAnalysis.CSharp.dll
Optimizing Microsoft.CodeAnalysis.dll
Optimizing Microsoft.Data.Edm.dll
Optimizing Microsoft.Data.OData.dll
Optimizing Microsoft.Data.Services.Client.dll
Optimizing Microsoft.Data.SqlClient.dll
Optimizing Microsoft.Extensions.Configuration.Abstractions.dll
Optimizing Microsoft.Extensions.Configuration.Binder.dll
Optimizing Microsoft.Extensions.Configuration.dll
Optimizing Microsoft.Extensions.DependencyInjection.Abstractions.dll
Optimizing Microsoft.Extensions.FileProviders.Abstractions.dll
Optimizing Microsoft.Extensions.Hosting.Abstractions.dll
Optimizing Microsoft.Extensions.Logging.Abstractions.dll
Optimizing Microsoft.Extensions.Logging.dll
Optimizing Microsoft.Extensions.Options.dll
Optimizing Microsoft.Extensions.Primitives.dll
Optimizing Microsoft.Extensions.WebEncoders.dll
Optimizing Microsoft.Identity.Client.dll
Optimizing Microsoft.Identity.Client.Extensions.Msal.dll
Optimizing Microsoft.IdentityModel.Abstractions.dll
Optimizing Microsoft.IdentityModel.Clients.ActiveDirectory.dll
Optimizing Microsoft.IdentityModel.JsonWebTokens.dll
Optimizing Microsoft.IdentityModel.Logging.dll
Optimizing Microsoft.IdentityModel.Protocols.dll
Optimizing Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
Optimizing Microsoft.IdentityModel.Tokens.dll
Optimizing Microsoft.Net.Http.Headers.dll
Optimizing Microsoft.Web.WebView2.Core.dll
Optimizing Microsoft.Web.WebView2.WinForms.dll
Optimizing Microsoft.Web.WebView2.Wpf.dll
Optimizing System.Buffers.dll
Optimizing System.Collections.Immutable.dll
Optimizing System.ComponentModel.Annotations.dll
Optimizing System.Configuration.ConfigurationManager.dll
Optimizing System.Data.SQLite.dll
Optimizing System.Diagnostics.DiagnosticSource.dll
Optimizing System.Drawing.Common.dll
Optimizing System.IdentityModel.Tokens.Jwt.dll
Optimizing System.IO.Hashing.dll
Optimizing System.IO.Ports.dll
Optimizing System.Management.Automation.dll
Optimizing System.Memory.Data.dll
Optimizing System.Memory.dll
Optimizing System.Net.Http.WinHttpHandler.dll
Optimizing System.Numerics.Vectors.dll
Optimizing System.Reactive.dll
Optimizing System.Reflection.Metadata.dll
Optimizing System.Reflection.TypeExtensions.dll
Optimizing System.Resources.Extensions.dll
Optimizing System.Runtime.CompilerServices.Unsafe.dll
Optimizing System.Security.AccessControl.dll
Optimizing System.Security.Cryptography.Cng.dll
Optimizing System.Security.Cryptography.ProtectedData.dll
Optimizing System.Security.Permissions.dll
Optimizing System.Security.Principal.Windows.dll
Optimizing System.ServiceModel.Duplex.dll
Optimizing System.ServiceModel.Http.dll
Optimizing System.ServiceModel.NetTcp.dll
Optimizing System.ServiceModel.Primitives.dll
Optimizing System.ServiceModel.Security.dll
Optimizing System.Spatial.dll
Optimizing System.Text.Encoding.CodePages.dll
Optimizing System.Text.Encodings.Web.dll
Optimizing System.Text.Json.dll
Optimizing System.Threading.Tasks.Extensions.dll
Optimizing System.ValueTuple.dll
Optimizing Devolutions.AMTProxy.dll
Optimizing Devolutions.Analytics.dll
Optimizing Devolutions.Authenticode.dll
Optimizing Devolutions.Az.dll
Optimizing Devolutions.Cadeau.dll
Optimizing Devolutions.Cloud.ApiWrapper.dll
Optimizing Devolutions.Compression.dll
Optimizing Devolutions.Crypto.dll
Optimizing Devolutions.DatabaseUpgrade.dll
Optimizing Devolutions.DatabaseUpgrade.Interface.dll
Optimizing Devolutions.DNSManagement.dll
Optimizing Devolutions.Gateway.Client.dll
Optimizing Devolutions.Hub.Clients.dll
Optimizing Devolutions.Hub.Core.dll
Optimizing Devolutions.HubPersonal.Clients.dll
Optimizing Devolutions.IdentityModel.dll
Optimizing Devolutions.Images.dll
Optimizing Devolutions.Ipc.dll
Optimizing Devolutions.Licorice.dll
Optimizing Devolutions.Logging.dll
Optimizing Devolutions.ModelGenerator.dll
Optimizing Devolutions.MsRdpEx.dll
Optimizing Devolutions.NativeMessaging.dll
Optimizing Devolutions.NetworkManagement.dll
Optimizing Devolutions.OnePasswordManagement.dll
Optimizing Devolutions.Otp.dll
Optimizing Devolutions.Picky.dll
Optimizing Devolutions.PowerShellMaml.dll
Optimizing Devolutions.Protocols.dll
Optimizing Devolutions.Rdp.Windows.dll
Optimizing Devolutions.RemoteManagement.dll
Optimizing Devolutions.RemoteManagement.XmlSerializers.dll
Optimizing Devolutions.Renderer.Windows.dll
Optimizing Devolutions.Rpc.dll
Optimizing Devolutions.Server.ApiWrapper.dll
Optimizing Devolutions.Sessions.Windows.dll
Optimizing Devolutions.SMB.dll
Optimizing Devolutions.SpiceworksManagement.dll
Optimizing Devolutions.TeamPassManagement.dll
Optimizing Devolutions.Utils.dll
Optimizing Devolutions.Utils.Windows.dll
Optimizing Devolutions.VimApi.dll
Optimizing Devolutions.VimApi.XmlSerializers.dll
Optimizing Devolutions.VirtualDesktop.dll
Optimizing Devolutions.VMwareManagement.dll
Optimizing Devolutions.Vnc.Windows.dll
Optimizing Devolutions.Zxcvbn.dll
Optimizing DevExpress.Charts.v22.2.Core.dll
Optimizing DevExpress.CodeParser.v22.2.dll
Optimizing DevExpress.Data.Desktop.v22.2.dll
Optimizing DevExpress.Data.v22.2.dll
Optimizing DevExpress.DataAccess.v22.2.dll
Optimizing DevExpress.DataAccess.v22.2.UI.dll
Optimizing DevExpress.DataVisualization.v22.2.Core.dll
Optimizing DevExpress.Diagram.v22.2.Core.dll
Optimizing DevExpress.Dialogs.v22.2.Core.dll
Optimizing DevExpress.Drawing.v22.2.dll
Optimizing DevExpress.Images.v22.2.dll
Optimizing DevExpress.Office.v22.2.Core.dll
Optimizing DevExpress.Pdf.v22.2.Core.dll
Optimizing DevExpress.Pdf.v22.2.Drawing.dll
Optimizing DevExpress.PivotGrid.v22.2.Core.dll
Optimizing DevExpress.Printing.v22.2.Core.dll
Optimizing DevExpress.RichEdit.v22.2.Core.dll
Optimizing DevExpress.RichEdit.v22.2.Export.dll
Optimizing DevExpress.Sparkline.v22.2.Core.dll
Optimizing DevExpress.Spreadsheet.v22.2.Core.dll
Optimizing DevExpress.TreeMap.v22.2.Core.dll
Optimizing DevExpress.Utils.v22.2.dll
Optimizing DevExpress.Utils.v22.2.UI.dll
Optimizing DevExpress.Xpo.v22.2.dll
Optimizing DevExpress.XtraBars.v22.2.dll
Optimizing DevExpress.XtraCharts.v22.2.dll
Optimizing DevExpress.XtraCharts.v22.2.Extensions.dll
Optimizing DevExpress.XtraCharts.v22.2.UI.dll
Optimizing DevExpress.XtraCharts.v22.2.Wizard.dll
Optimizing DevExpress.XtraDiagram.v22.2.dll
Optimizing DevExpress.XtraDialogs.v22.2.dll
Optimizing DevExpress.XtraEditors.v22.2.dll
Optimizing DevExpress.XtraGrid.v22.2.dll
Optimizing DevExpress.XtraLayout.v22.2.dll
Optimizing DevExpress.XtraNavBar.v22.2.dll
Optimizing DevExpress.XtraPivotGrid.v22.2.dll
Optimizing DevExpress.XtraPrinting.v22.2.dll
Optimizing DevExpress.XtraRichEdit.v22.2.dll
Optimizing DevExpress.XtraSpreadsheet.v22.2.dll
Optimizing DevExpress.XtraTreeList.v22.2.dll
Optimizing DevExpress.XtraTreeMap.v22.2.dll
Optimizing DevExpress.XtraVerticalGrid.v22.2.dll
Optimizing DevExpress.XtraWizard.v22.2.dll
Optimizing AxInterop.MSTSCLib.dll
Optimizing AxInterop.UltraVncAx.dll
Optimizing Interop.IWshRuntimeLibrary.dll
Optimizing Interop.MSTSCLib.dll
Optimizing Interop.NetFwTypeLib.dll
Optimizing Interop.SHDocVw.dll
Optimizing Interop.TaskScheduler.dll
Optimizing Interop.ULTRAVNCAXLib.dll
Optimizing Azure.Core.dll
Optimizing Azure.Identity.dll
Optimizing Azure.ResourceManager.dll
Optimizing Azure.ResourceManager.Network.dll
Optimizing Azure.Security.KeyVault.Secrets.dll
Optimizing Azure.Storage.Blobs.dll
Optimizing Azure.Storage.Common.dll
Optimizing AWSSDK.Core.dll
Optimizing AWSSDK.EC2.dll
Optimizing AWSSDK.Route53.dll
Optimizing AWSSDK.Route53Domains.dll
Optimizing AWSSDK.Route53Resolver.dll
Optimizing AWSSDK.S3.dll
Optimizing Newtonsoft.Json.dll
Elapsed time: 00:00:14.6251984

avatar
It still took a minute to open RDM after I ran the OptimizeRDM.ps1. here is the log.

Hope the latest version fix my problem and if I hope you can optimize your application and also avoid having to manually run optimizer or anything to make the application faster. It's weird 🤨


During the .msi install we run the file, so in most cases there is no reason to re-run the file manually. We only ask to rerun to debug loading issues.

Best regards,

Stéfane Lavergne

avatar

Hello

I didn't see this mentioned above, but are you using any particular anti-virus or other security software that's doing some kind of real time scanning (i.e. evaluating Remote Desktop Manager and it's associated libraries when launched)?

You might try excluding the files temporarily and see if it makes a difference to your startup time.

Thanks and kind regards,

Richard Markievicz

avatar

We use Windows Defender as antivirus right now... After we upgrade to latest version later this year and if we still have this kind of issue, I'll tell my IT to look at this option to put exception for this app...

I ask already to a Windows admin and he said that it's long to open and he keeps it always open for that reason.

For now, I will deal with it.

Thanks

avatar

We're experiencing the same issue: Startup takes a minute+. While we were thinking about licensing Remote Desktoip Manager, this is the main pain point not proceeding. We cannot commit to our users why starting up an app for remote desktop management takes more than a minute to start. We get supoort tickets for this issue, because the users think something has broken.

I urge Devolutions to really get this issue solve. For now we switch to another solution.

Best regards

avatar

@janrusch

I would encourage you to create a new thread to help us diagnose further and not spam the users from the original thread.

"Slow startup" can be caused my many things. We would first need to diagnose what is slow in your case. For example what do you see if you go Help > Diagnostics > Startup time? This is the time it took to "load" the .dll files from disk. Loading involves things like disk IO, virus scan and .NET compilation. Each need to be narrowed down and analyzed.

Best regards,

Stéfane Lavergne