RDM 9.2.10.0: slow startup

avatar

Hello everyone,

we are using RDM 9.2.10.0 32-Bit and it takes approximately 15-30 seconds to start. Is there any fix or hint to improve the startup time?

The situation:
- RDM is installed on a network share
- Everyone opens it over a link
- Datasource: MSSQL-Server 2008

RDM:
- Version: 9.2.10.0
- .NET Runtime: v2.0.50727
- Remotedesktop: 6.3.9600.16415

Profiler log:
LoadConnections [Microsoft SQL Server/SQL Azure : RDP]...
OfflineManager.GetDataSourceSettings : 1062 ms
OfflineManager.LoadConnections...
Silent: System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
bei System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
bei System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
bei System.Data.SQLite.SQLiteDataReader.NextResult()
bei System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
bei System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
bei System.Data.SQLite.SQLiteCommand.ExecuteScalar()
bei Devolutions.RemoteDesktopManager.Business.SQLiteHelper.ExecuteScalar[T](String connectionString, String sql, SQLiteParameter[] parameters, Boolean rethrow)
OfflineManager.LoadConnections : 27 ms
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 33 ms
LoadDataSourceSettingsFromDataSource : 36 ms
Silent: System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
bei System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
bei System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
bei System.Data.SQLite.SQLiteDataReader.NextResult()
bei System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
bei System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
bei System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
bei Devolutions.RemoteDesktopManager.Business.SQLiteHelper.ExecuteNonQuery(String connectionString, String sql, SQLiteParameter[] parameters, Boolean rethrow)
OfflineManager.Save : 1993 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 6 ms
DecryptData : 41 ms - Count : 209
DeserializeData : 540 ms - Count : 209
Database.GetConnections : 632 ms
GetConnections : 648 ms
PrepareConnectionList : 8 ms
DecryptData : 0 ms - Count : 1
DeserializeData : 0 ms - Count : 1
Silent: System.Data.SQLite.SQLiteException: database disk image is malformed
database disk image is malformed
bei System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
bei System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
bei System.Data.SQLite.SQLiteDataReader.NextResult()
bei System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
bei System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
bei System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
bei Devolutions.RemoteDesktopManager.Business.SQLiteHelper.ExecuteNonQuery(String connectionString, String sql, SQLiteParameter[] parameters, Boolean rethrow)
OfflineManager.Save : 589 ms
DoMergeConnections : 744 ms
LoadConnectionsFromDataSource : 3657 ms
DecryptData : 0 ms - Count : 1
DeserializeData : 0 ms - Count : 1
LoadConnections [Microsoft SQL Server/SQL Azure : RDP] : 5008 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 223 ms
PreCreateGroups : 38 ms - Count : 1
BeginUpdate : 37 ms
TreeView.LoadConnectionList : 306 ms
LoadTrayiconContextMenu : 3 ms
ThreadQueue.AddRow : 224 ms - Count : 1
ThreadQueue.AddRow : 290 ms - Count : 208

Stefan

All Comments (7)

avatar

Hello,

Running from a network share introduces a lot of latency loading libraries as we have quite a few. Have you modified the configuration folder so the local data is also not at the default location?

What draws the attention in your logs is the offline file. Could you go in %LOCALAPPDATA%\Devolutions\RemoteDesktopManager and delete the offline.db file you would find under that folder. If your have more than one just reply and I'll help you locate the proper one.

You would then run another profiler run so we can see if that improved things.

Thank you

Maurice

avatar

Hello Mr. Côté,

first of all I would thank you for your quick answer. I deleted the offline.db file. It was the only one in %LOCALAPPDATA%. It looks really better.

Here is a new trace:

LoadConnections [Microsoft SQL Server/SQL Azure : RDP]...
OfflineManager.LoadConnections...
OfflineManager.LoadConnections : 1 ms
LoadConnectionsFromDataSource...
LoadDataSourceSettingsFromDataSource...
GetDataSourceSettings : 60 ms
LoadDataSourceSettingsFromDataSource : 64 ms
OfflineManager.Save : 0 ms
GetConnections...
Database.GetConnections...
Reading connections from database : 5 ms
DecryptData : 39 ms - Count : 209
DeserializeData : 1597 ms - Count : 209
Database.GetConnections : 1674 ms
GetConnections : 1680 ms
PrepareConnectionList : 7 ms
DecryptData : 0 ms - Count : 1
DeserializeData : 0 ms - Count : 1
OfflineManager.Save : 1975 ms
DoMergeConnections : 2086 ms
LoadConnectionsFromDataSource : 4022 ms
DecryptData : 0 ms - Count : 1
DeserializeData : 0 ms - Count : 1
LoadConnections [Microsoft SQL Server/SQL Azure : RDP] : 4236 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 219 ms
PreCreateGroups : 42 ms - Count : 1
BeginUpdate : 40 ms
TreeView.LoadConnectionList : 313 ms
LoadTrayiconContextMenu : 3 ms
ThreadQueue.AddRow : 1458 ms - Count : 3
ThreadQueue.AddRow : 285 ms - Count : 206

Stefan

avatar

Hello,

is it normal that RDM creates a new offline.db file in %LOCALAPPDATA%?

Thank you
Stefan

avatar

Yes it's the cache file but it shoud be in %LOCALAPPDATA%\Devolutions\RemoteDesktopManager

David Hervieux

avatar

Hi,

that's correct. The file is located in %LOCALAPPDATA%\Devolutions\RemoteDesktopManager\7875ACA1....

Any suggestions for the slow startup from a network share?

avatar

Hello,

I would be curious of that would be the performance with the offline mode being disabled, you would also have to disable the cache.

SQLite is truly meant as a local solution and I do not know if its library being on another drive than the DB can penalize us.

These two settings are in the data source settings.

Thank you,

Maurice

avatar

Hello,

thank you for the quick answer.

I checked the data source settings:
- Offline Mode: Read only
- Caching Mode: intelligent caching

I'll talk to my colleague about this.

Thank you very much!
Stefan