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

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