We've got a new installation of SQL Server on a dedicated system. We've got about 7300 entries in the RDM database. Performance is noticeably slower than on a data source with only 2500 entries.
When opening the Edit Credentils dialog on the larger database it takes about 5 seconds for the screen to open.
Is there any tuning or troubleshooting we can do with this?
-David
Hi,
Have you enable the Intelligent cache? 7300 it's a lot of data. Is it possible to split it in different departments and create more than one database? What you can also try is to disable the Refresh before edit in the application options.
David Hervieux
Yes Intelligent Cache is on and I tried the disable refresh before edit and that speeds it up slightly, but there is still a pretty good delay. We could try splitting up the database by region or something, but that seems like a poor choice. Is there no database indexing or something we could do to speed it up?
Hi again,
I'm pretty sure that not a database issue because we keep the connection in memory. The problem is that you have 7300 connections loaded and it might slow down some initialization of the dialog. For example RDM load the credentials in the combobox. I can create a special version with some profiling information. This will help us to debug where the slow down is located. Do you want me to send you the link?
David Hervieux
Sure
Could you install this version? It's not an official release:
http://download.devolutions.net/Devolutions.RemoteDesktopManager.Bin.9.0.13.0.zip
Open the profiler and open the connection dialog
http://help.remotedesktopmanager.com/troubleshooting_profiler.htm
David Hervieux
LoadConnections [Microsoft SQL Server/SQL Azure : vc3-rd-01] - 64-bit...
OfflineManager.LoadConnections...
LoadConnectionsFromOfflineFile...
DeserializeData : 0 ms
ReadFromOffline : 1 ms
LoadConnectionsFromOfflineFile : 5 ms
OfflineManager.LoadConnections : 96 ms
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 1 ms
LoadDataSourceSettingsFromDataSource : 6 ms
OfflineManager.Save : 17 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 471 ms
ConnectionInfos.Foreach...
Decrypt (multi-threaded) : 3836 ms
Deserialize (multi-threaded) : 199 ms
ConnectionInfos.Foreach : 13 ms
Database.GetConnections : 4540 ms
GetConnections : 4549 ms
PrepareConnectionList : 12 ms
ThreadQueue.AddRow : 34 ms
ThreadQueue.AddRow : 374 ms
ThreadQueue.AddRow : 161 ms
ThreadQueue.AddRow : 139 ms
ThreadQueue.AddRow : 157 ms
ThreadQueue.AddRow : 156 ms
ThreadQueue.AddRow : 157 ms
ThreadQueue.AddRow : 149 ms
ThreadQueue.AddRow : 168 ms
ThreadQueue.AddRow : 184 ms
ThreadQueue.AddRow : 193 ms
ThreadQueue.AddRow : 191 ms
ThreadQueue.AddRow : 197 ms
ThreadQueue.AddRow : 202 ms
ThreadQueue.AddRow : 197 ms
ThreadQueue.AddRow : 125 ms
OfflineManager.Save : 13 ms
DoMergeConnections : 7414 ms
LoadConnectionsFromDataSource : 12018 ms
LoadConnections [Microsoft SQL Server/SQL Azure : vc3-rd-01] - 64-bit : 12317 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
BuildGroupList...
FirstLoop : 3 ms
FindConnectionGroup : 70 ms - Count:118
BuildGroupList : 16 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 2322 ms
PreCreateGroups : 96 ms - Count:1
BeginUpdate : 126 ms
TreeView.LoadConnectionList : 2556 ms
Clear the log and open the editor. It seems to contain to much information for just opening the connection editor.
David Hervieux
Oh, sorry, I did a refresh.
Here is what it looks like when I do the editor.
BuildGroupList...
FirstLoop : 0 ms
FindConnectionGroup : 1 ms - Count:3
BuildGroupList : 3 ms
BuildGroupList...
FirstLoop : 0 ms
FindConnectionGroup : 1 ms - Count:3
BuildGroupList : 5 ms
LoadConnections [Microsoft SQL Server/SQL Azure : vc3-rd-01] - 64-bit...
Connection cache up to date
LoadConnections [Microsoft SQL Server/SQL Azure : vc3-rd-01] - 64-bit : 114 ms
FrmConnection.DoInitializeComponent...
FrmConnection.RegisterDescriptors...
FrmConnection.RegisterDescriptors : 73 ms
FrmConnection.DoInitializeComponent : 654 ms
FrmConnection.LoadGroups...
FrmConnection.LoadGroups : 44 ms
FrmConnection.LoadConnectionInControls...
FrmConnection.LoadCredentials...
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 16 ms
FrmConnection.LoadCredentials : 578 ms
FrmConnection.LoadConnectionInControls : 2248 ms
FrmConnection.Shown...
FrmConnection.Shown : 21 ms
LoadConnections [Microsoft SQL Server/SQL Azure : vc3-rd-01] - 64-bit...
Connection cache up to date
LoadConnections [Microsoft SQL Server/SQL Azure : vc3-rd-01] - 64-bit : 131 ms
Any ideas?
Hi,
I have to add more logs. I will send you a new version tomorrow.
David Hervieux
I have updated the zip file, could you download it again?
http://download.devolutions.net/Devolutions.RemoteDesktopManager.Bin.9.0.13.0.zip
David Hervieux
BuildGroupList...
FirstLoop : 0 ms
FindConnectionGroup : 0 ms - Count:2
BuildGroupList : 3 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit...
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 1 ms
LoadDataSourceSettingsFromDataSource : 4 ms
OfflineManager.Save : 46 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 0 ms
ConnectionInfos.Foreach...
Decrypt (multi-threaded) : 1 ms
Deserialize (multi-threaded) : 0 ms
ConnectionInfos.Foreach : 12 ms
Database.GetConnections : 36 ms
GetConnections : 49 ms
PrepareConnectionList : 0 ms
ThreadQueue.AddRow : 17 ms
ThreadQueue.AddRow : 63 ms
OfflineManager.Save : 37 ms
DoMergeConnections : 4009 ms
LoadConnectionsFromDataSource : 4143 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit : 4264 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
BuildGroupList...
FirstLoop : 3 ms
FindConnectionGroup : 77 ms - Count:122
BuildGroupList : 16 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 2349 ms
PreCreateGroups : 99 ms - Count:1
BeginUpdate : 139 ms
TreeView.LoadConnectionList : 2603 ms
FrmConnection.LoadGroups...
FrmConnection.LoadGroups : 444 ms
BuildGroupList...
FirstLoop : 0 ms
FindConnectionGroup : 0 ms - Count:2
BuildGroupList : 11 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit...
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 1 ms
LoadDataSourceSettingsFromDataSource : 6 ms
OfflineManager.Save : 33 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 0 ms
ConnectionInfos.Foreach...
Decrypt (multi-threaded) : 0 ms
Deserialize (multi-threaded) : 0 ms
ConnectionInfos.Foreach : 8 ms
Database.GetConnections : 26 ms
GetConnections : 34 ms
PrepareConnectionList : 0 ms
ThreadQueue.AddRow : 11 ms
OfflineManager.Save : 36 ms
DoMergeConnections : 4516 ms
LoadConnectionsFromDataSource : 4620 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit : 4743 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
BuildGroupList...
FirstLoop : 3 ms
FindConnectionGroup : 76 ms - Count:122
BuildGroupList : 18 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 2403 ms
PreCreateGroups : 98 ms - Count:1
BeginUpdate : 146 ms
TreeView.LoadConnectionList : 2662 ms
BuildGroupList...
FirstLoop : 0 ms
FindConnectionGroup : 0 ms - Count:2
BuildGroupList : 9 ms
This is not for the edit dialog?
David Hervieux
That one was a credential edit. This is from a session edit.
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit...
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 1 ms
LoadDataSourceSettingsFromDataSource : 3 ms
OfflineManager.Save : 38 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 0 ms
ConnectionInfos.Foreach...
Decrypt (multi-threaded) : 295 ms
Deserialize (multi-threaded) : 0 ms
ConnectionInfos.Foreach : 11 ms
Database.GetConnections : 320 ms
GetConnections : 328 ms
PrepareConnectionList : 0 ms
ThreadQueue.AddRow : 406 ms
OfflineManager.Save : 39 ms
DoMergeConnections : 2511 ms
LoadConnectionsFromDataSource : 2902 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit : 3030 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
BuildGroupList...
FirstLoop : 3 ms
FindConnectionGroup : 76 ms - Count:122
BuildGroupList : 17 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 2294 ms
PreCreateGroups : 107 ms - Count:1
BeginUpdate : 137 ms
TreeView.LoadConnectionList : 2554 ms
FrmConnection.DoInitializeComponent...
FrmConnection.RegisterDescriptors...
FrmConnection.RegisterDescriptors : 78 ms
FrmConnection.DoInitializeComponent : 753 ms
FrmConnection.LoadGroups...
FrmConnection.LoadGroups : 44 ms
FrmConnection.LoadConnectionInControls...
FrmConnection.freConnectionMorePanel...
FrmConnection.freConnectionMorePanel : 7 ms
FrmConnection.freConnectionVPNPanel...
FrmConnection.freConnectionVPNPanel : 42 ms
FrmConnection.freConnectionAdvancedPanel...
FrmConnection.freConnectionAdvancedPanel : 0 ms
FrmConnection.CreateConnectionSettingsFrame...
FrmConnection.CreateConnectionSettingsFrame : 14984 ms
FrmConnection.LoadCredentialSessions...
FrmConnection.LoadCredentialSessions : 543 ms
FrmConnection.LoadCredentialSessions...
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 2 ms
FrmConnection.LoadCredentialSessions : 17 ms
FrmConnection.LoadCredentialsToControls...
FrmConnection.LoadCredentialsToControls : 7 ms
FrmConnection.Panels.LoadConnectionInControls...
FrmConnection.Panels.LoadConnectionInControls : 1203 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 1 ms
FrmConnection.LoadConnectionInControls : 17347 ms
FrmConnection.Shown...
FrmConnection.Shown : 23 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit...
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 7 ms
LoadDataSourceSettingsFromDataSource : 13 ms
OfflineManager.Save : 37 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 0 ms
ConnectionInfos.Foreach...
Decrypt (multi-threaded) : 0 ms
Deserialize (multi-threaded) : 0 ms
ConnectionInfos.Foreach : 10 ms
Database.GetConnections : 28 ms
GetConnections : 38 ms
PrepareConnectionList : 0 ms
ThreadQueue.AddRow : 52 ms
ThreadQueue.AddRow : 24 ms
OfflineManager.Save : 37 ms
DoMergeConnections : 4872 ms
LoadConnectionsFromDataSource : 4994 ms
LoadConnections [Microsoft SQL Server/SQL Azure : VC3 RDM] - 64-bit : 5125 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
BuildGroupList...
FirstLoop : 3 ms
FindConnectionGroup : 73 ms - Count:122
BuildGroupList : 16 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 2267 ms
PreCreateGroups : 104 ms - Count:1
BeginUpdate : 134 ms
TreeView.LoadConnectionList : 2520 ms
Thank you. We are working on many performance improvements right now. I will let you know as soon as I get another build.
David Hervieux
Thanks, any help would be appreciated. I'm getting a lot of pushback about how slow this is running.
Would the server version improve performance with this many entries?
Not it won't since the problem is with the loading of all the data.
David Hervieux